Node.js -找不到模块

k2arahey  于 2023-05-28  发布在  Node.js
关注(0)|答案(3)|浏览(298)

我使用的是Node Boilerplate,一切都很好,直到我决定在它上面创建另一个项目(在另一个目录中)。
现在,我在两个不同的文件夹中有完全相同的代码库(这个项目)。我可以运行其中一个没有任何问题,但另一个失败了:

% node app.js
node.js:116
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: Cannot find module 'connect/middleware/router'
    at Function._resolveFilename (module.js:299:11)
    at Function._load (module.js:245:25)
    at require (module.js:327:19)
    at Object.<anonymous> (/home/gotts/Sites/nodejs-uploadr/lib/express/lib/express/server.js:17:14)
    at Module._compile (module.js:383:26)
    at Object..js (module.js:389:10)
    at Module.load (module.js:315:31)
    at Function._load (module.js:276:12)
    at require (module.js:327:19)
    at Object.<anonymous> (/home/gotts/Sites/nodejs-uploadr/lib/express/lib/express/index.js:28:31)

这里解释了一个类似的问题-https://github.com/visionmedia/express/issues/535,它说问题出在不兼容的connect/express版本中。
但这怎么可能?源代码在两个文件夹中完全相同,在一个副本中工作正常,在另一个副本中失败?

9ceoxa92

9ceoxa921#

这两个文件夹是否共享同一个父文件夹?Node在应用目录中的~/.node_modules和/node_modules中查找模块。

kcugc4gi

kcugc4gi2#

好吧,让我来回答我自己的问题:
抱歉,这两个文件夹并不完全相同(我需要更好地学习unix diff)。在代码中它需要(“connect”)
本地 checkout 连接到/lib文件夹优先,但如果它不在那里-连接将从Ricardo先前设置的~/.node_modules加载。

iovurdzv

iovurdzv3#

@在最后一条评论中看到node.js express module not loading properly,也许会有帮助
其基本思想是将模块安装在应用程序文件夹中,而不是安装在系统级别

相关问题