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

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


当前回答

更改目录并指向当前项目文件夹,然后单击“npm install”。.

这将将所有依赖项和模块安装到项目文件夹中。

其他回答

专业提示:

这个错误发生在我身上,因为我输入的是node blah而不是npm blah。

收到的错误消息还不够生气,无法提醒我自己的愚蠢!

使用npm install仅将模块安装到当前目录中(位于名为node_modules的子目录中)。app.js是否位于home/dave/src/server/下?如果没有,并且您想从任何目录中使用该模块,则需要使用npm install-g全局安装该模块。

我通常在本地安装大多数软件包,以便将它们与我的项目代码一起签入。

更新(8/2019):

现在,您可以使用package-lock.json文件,该文件在npm修改node_modules目录时自动生成。因此,您可以省去签入包,因为package-lock.json跟踪您当前使用的node_module的确切版本。要从package-lock.json而不是package.json安装包,请使用命令npmci。

更新(2016年3月):

我的回答遭到了很多批评,特别是我检查了我的代码所依赖的包。几天前,有人发布了他们所有的包(https://kodfabrik.com/journal/i-ve-just-liberated-my-modules)这打破了React、Babel和其他一切。希望现在很清楚,如果你有生产代码,你不能依赖NPM来维护你的依赖关系。

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

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

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

包括如下内容:

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

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

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

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

还有啊!

在我的案例中,我使用UNMET PEER DEPENDENCY redux@^3.0.0导致此错误消息,请查看所有模块并使用--save再次安装缺失的模块

npm install redux --save

最终对我有用的是确保在webpack配置中包含任何合并深度依赖项作为外部项:

externals: {
    puppeteer: 'require("puppeteer")',
}

并将package.json中的node_modules路径声明为“extraResource”。

"extraResources": [
    "node_modules/puppeteer,
}