【发布时间】: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