开发者问题收集

如何使用 Node.js 解决“找不到模块”错误?

2012-01-26
3119502

从github拉下模块并按照指令构建它后,我尝试使用以下方式将其拉入现有项目中:

084737328

这似乎可以解决问题:

488785689

但是Node.js找不到模块:

002167526

我真的想了解正在发生的事情在这里,但是我对接下来的位置有些损失。有什么建议吗?

3个回答

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

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

更新(2019 年 8 月):

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

更新(2016 年 3 月):

我收到了很多关于我回复的批评,特别是我签入了我的代码所依赖的软件包。几天前,有人取消发布了他们的所有软件包 ( https://kodfabrik.com/journal/i-ve-just-liberated-my-modules ) ( 存档在 Wayback Machine ),这破坏了 React、Babel 以及几乎所有其他东西。希望现在很清楚,如果您有生产代码,您不能依赖 NPM 为您维护依赖项。

Bill
2012-01-26

我遇到了非常类似的问题。删除整个 node_modules 文件夹并重新安装对我有用:

rm -rf node_modules
npm install
Abhinav Singh
2015-05-25
npm install --save module_name

例如,如果错误是:

{ [Error: Cannot find module '/root/.npm/form-data'] code: 'MODULE_NOT_FOUND' }

那么您可以通过执行命令 npm install --save form-data 来解决此问题。

Piyush Chordia
2015-06-17