【问题标题】:Node.js Express Error: Cannot find moduleNode.js Express 错误:找不到模块
【发布时间】:2019-01-31 03:41:15
【问题描述】:

由于导入,我在节点 10.9.0 的 docker 中运行 express 应用程序时遇到困难:

root@e85495ae1c9e:/usr/app/backend# node app.js  
internal/modules/cjs/loader.js:583
throw err;
^

Error: Cannot find module '/usr/app/backend/models/todo'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
at Function.Module._load (internal/modules/cjs/loader.js:507:25)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/usr/app/backend/app.js:7:12)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)

代码可以在本地运行,但不能在 docker 中运行。

报告丢失的文件肯定存在:

root@e85495ae1c9e:/usr/app/backend/models# ls -alsh
total 12K
4.0K drwxr-xr-x 2 root root 4.0K Aug 22 12:56 .
4.0K drwxr-xr-x 1 root root 4.0K Aug 24 14:48 ..
4.0K -rwxr-xr-x 1 root root  211 Aug 22 12:57 Todo.js

app.js 中的导入导致问题是这样的(请注意,我通过 dirname 解决这个问题,因为我在相对导入方面的运气也为零):

var Todo = require(path.join((__dirname), "/models/todo"));

我在搜索网络时找不到任何有类似错误的人,所以我在这里发布这个希望能得到一点帮助。

如果需要更多信息,请告诉我。

另外,如果您对此表示反对,请评论原因,这样我就会知道我在哪里搞砸了。

【问题讨论】:

  • 大小写是否正确?您的文件是 Todo,但您需要 todo(区分大小写)。
  • @basic:谁能想到! windows不关心大小写,linux关心!谢谢,我已经被困了好几个小时了!
  • 很高兴这有帮助!我也将其添加为答案,因此请随时接受。

标签: javascript node.js docker npm


【解决方案1】:

只是想将此添加为未来读者的答案。

问题在于外壳。当文件是待办事项时,他要求待办事项。始终确保需要正确的套管。您不能依赖操作系统来找到正确的文件。

【讨论】:

    猜你喜欢
    • 2013-02-03
    • 2014-11-07
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多