从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)

我真的很想了解这里发生了什么,但我有点不知所措,不知道下一步该去哪里。有什么建议吗?


当前回答

也许像我一样,您将express中的“视图引擎”设置为不存在的引擎,或者尝试使用未注册的模板引擎。确保使用:app.engine('引擎名称',引擎)app.set(“查看引擎”,“引擎名称”)

其他回答

检查环境变量NODE_PATH是否设置正确并指向NODE_modules路径。nodejs使用此变量搜索库

如果您需要的模块的package.json中缺少或不正确的主字段,则可能会遇到此错误。虽然模块本身已安装,但npm/node必须使用单个.js文件作为模块的入口点。如果主字段不在,则默认在模块的文件夹中查找index.js。如果模块的主文件不名为index.js,它将无法要求它。

在将基于浏览器的模块转换为CommonJS必需模块时发现;browserify并不关心缺少的主字段,因此错误没有被注意到。

删除node/npm,然后重新安装稳定的(不是最新的)版本对我很有用。

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}

https://nodejs.org/en/download/

一种罕见但也可能的情况是模块名称中的拼写错误。执行节点时,我错过了文件名中的“s”。\util.js,它应该是node。\utils.js,并且在这个问题的所有答案中没有找到任何解决方案,直到我发现即使我删除了所有内容,也无法运行该文件!

刚刚发现了一个不寻常的场景,可能对某人有用,有点转移注意力。

我也收到了“找不到模块”错误,但奇怪的是,在我的本地(Mac托管)Node.js环境中,一切都很完美。只有当代码部署在我们的Linux服务器上时,才会出现这个问题。

好结果发现这是一个拼写错误,(显然)基于Mac的Node.js安装非常乐意忽略。

包括如下内容:

var S3Uploader = require('./S3Uploader.class');

但实际的文件名为“s3Uploader.class.js”

请注意代码和文件名之间“s”与“s”的大小写差异。

因此,如果这里的其他解决方案都没有解决您的问题,那么请仔细检查您的文件名中的字符大小写是否正确!:)

还有啊!