从GitHub下载模块并按照说明进行构建后,我尝试使用以下方法将其拉入现有项目:
> npm install ../faye
这似乎起到了作用:
> npm list
/home/dave/src/server
└─┬ faye@0.7.1
├── cookiejar@1.3.0
├── hiredis@0.1.13
└── redis@0.7.1
但是Node.js找不到模块:
> node app.js
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'faye'
at Function._resolveFilename (module.js:334:11)
at Function._load (module.js:279:25)
at Module.require (module.js:357:17)
at require (module.js:368:17)
at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Array.0 (module.js:470:10)
我真的很想了解这里发生了什么,但我有点不知所措,不知道下一步该去哪里。有什么建议吗?
刚刚发现了一个不寻常的场景,可能对某人有用,有点转移注意力。
我也收到了“找不到模块”错误,但奇怪的是,在我的本地(Mac托管)Node.js环境中,一切都很完美。只有当代码部署在我们的Linux服务器上时,才会出现这个问题。
好结果发现这是一个拼写错误,(显然)基于Mac的Node.js安装非常乐意忽略。
包括如下内容:
var S3Uploader = require('./S3Uploader.class');
但实际的文件名为“s3Uploader.class.js”
请注意代码和文件名之间“s”与“s”的大小写差异。
因此,如果这里的其他解决方案都没有解决您的问题,那么请仔细检查您的文件名中的字符大小写是否正确!:)
还有啊!
显然,从这个问题来看,有很多可能的原因。
也许这会对某人有所帮助,希望没有人像我一样愚蠢地使用这种技术:
检查文件夹树中是否有node_modules文件夹。
场景1:如果您有一个项目文件夹,在多个项目之间共享了node_modules文件夹,那么您可能没有遇到任何问题
|- projects
| |- node_modules <- OK
| |- project1 <- No node_modules folder
| | |- package.json
| |- project2 <- No node_modules folder
| | |- package.json
场景2:如果添加不同性质的第三个项目,则可以选择在该项目中保留node_modules文件夹:
|- projects
| |- node_modules <- Can be used by project 3
| |- project1 <- No node_modules folder
| | |- package.json
| |- project2 <- No node_modules folder
| | |- package.json
| |- project3
| | |- node_modules <- Packages for project 3 only
| | |- package.json
我猜项目3的node-modules文件夹中的一些包依赖于它在父文件夹的node_modules文件夹中找到(或找不到)的包。尽管您希望在项目3的node_modules文件夹中找到依赖项。也许是因为导入和引用某些包的方式?
不用说,这是一场即将发生的灾难:)