从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_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来维护你的依赖关系。


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

rm -rf node_modules
npm install

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

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


npm install --save module_name

例如,如果错误为:

{[错误:找不到模块“/root/.npm/form data”]代码:“module_NOT_FOUND”}

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


当第一个npm安装由于某种原因(npm的SIGINT)崩溃,或者延迟太长,或者数据损坏时,就会发生这种情况。再次尝试npm安装不会解决问题。

npm第一次检查出现了问题,因此最好的选择是删除该文件并重新启动npm安装。


我试图发布自己的包,然后将其包含在另一个项目中。我遇到这个问题是因为我是如何构建第一个模块的。我使用ES2015导出来创建模块,例如,假设模块看起来像这样:

export default function(who = 'world'){
    return `Hello ${who}`;
}

与Babel一起编译后,发布前:

'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});

exports.default = function () {
    var who = arguments.length <= 0 || arguments[0] === undefined ? 'world' : arguments[0];


    return 'Hello ' + who;
};

因此,在另一个项目(无ES2015)中安装npm模块名称后,我不得不做

var-hello=require('module-name').default;

真的把包裹进口了。

希望这有帮助!


如果使用nvm,请检查绑定到其他库的现有node_module是否编译为正确的node.js版本。

我也犯了同样的错误。原因如下:我们使用nvm是因为我们在一台服务器上运行两个应用程序,一个需要Node.js 5.6,因为它使用Node gd(目前不在Node.js 6上运行),另一个需要Node.js 6。Node.js 6是apt-get安装。

我们还使用pm2工具进行部署。

因此,默认设置是当nvm未生效时pm2进程启动,因此它使用Node.js(版本6)的apt-get安装。因此,主pm2守护进程从Node.js 6开始。如果我在fork模式下运行应用程序,它们将在单独的进程中启动,并且nvm设置生效。当我以集群模式运行应用程序时,它们继承了非nvm环境。

因此,当我尝试切换到集群模式时,应用程序未能启动,因为为5.6编译的绑定失败,并显示此消息。

我通过在nvm设置生效时重新启动pm2解决了这个问题。此外,还应修复启动脚本。


从项目中删除node_module根文件夹(例如:myApp)。转到myApp文件夹,然后从终端键入以下命令

>myApp>npm install

它将安装项目所需的所有依赖模块。


我昨天经历了这个错误。我花了一段时间才意识到package.json中的主条目指向了我移动的文件。一旦我更新,错误消失了,包工作了。


专业提示:

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

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


首先,是的,我回答的一部分肯定有助于解决OP发布的错误。其次,在尝试了以下步骤后,我遇到了一些其他错误,因此,我也编写了这些错误的解决方案。

(嘘!我不确定我是否成功地帮助解决了上述错误,或者我是否打破了某些规则或回答格式,但我面对了上述错误和其他一些错误,我花了很多时间来找到这些错误的正确解决方案。我正在写完整的解决方案,因为万一其他人也面临这些错误,那么他很有希望在这里找到解决方案。)

因此,补充并阐述了PrashanthiDevi提供的答案,并补充了我的个人经验,这里是:

我是整个e2e和单元测试部分的新手。我从《长话短说》开始研究这一部分。现在我已经有了编写测试的文件,但我必须运行测试。

我已经安装了所有必需的软件和工具,但当我最初运行运行测试的代码时,我遇到了“找不到模块”错误。在经历了许多关于SO的不同问题后,我找到了一个我认为有助于找到解决方案的答案。

此人建议在我的项目文件夹中运行命令npm install。

这样做的原因是用所有必需的文件和依赖项更新项目文件夹中的节点模块文件夹。

(以下部分可能与这个问题无关,但如果有人遇到我所面临的同样情况,可能会有所帮助。)

上述步骤确实解决了我以前的错误,但又抛出了一个新错误!这一次的错误是“无法在”处找到chromedriver。。\node_modules\量角器\硒\铬驱动器'。

然而,这个错误的解决方案对我来说很愚蠢(也很有趣)。我的selenium文件夹中已经有了chromedriver文件。但事实证明,出现上述错误是因为我的chromedriver文件位于selenium文件夹中,而不是chromedriver文件夹中。因此,创建一个chromedriver文件夹并在那里复制chromedriver文件解决了我的问题!

此外,对于错误:等待WebDriverServer超时,您可以将这行代码添加到exports.config{}中的conf.js文件中:

硒地址:'http://localhost:8080/'

希望这有帮助!


将webpack与webpack开发中间件一起使用时遇到此问题。

已将单个文件转换为文件夹。

观察者似乎没有看到新文件夹,模块现在丢失了。

通过重新启动进程修复。


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

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

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

包括如下内容:

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

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

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

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

还有啊!


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

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


我可以再加一个地方检查;我尝试使用的软件包是我自己发布给私人NPM回购的另一个软件包。我忘记正确配置package.json中的“main”属性。因此,该包位于消费包的node_modules文件夹中,但我得到的是“找不到模块”。我花了几分钟才意识到自己的错误-(


指定restler文件夹的路径,该文件夹将位于node_modules文件夹中,如:var rest=require('./node_modules/restler');

这对我有用。


对于TypeScript用户,如果您正在导入内置节点模块(如http、路径或url),并且遇到错误,如“找不到模块”x,则可以通过运行

npm install @types/node --save-dev

该命令将NodeJS TypeScript定义导入到项目中,允许您使用Node的内置模块。


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

npm install redux --save

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


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


请安装新的CLI v3(npm install-gionic@latest).

如果此问题在CLI v3中仍然存在。非常感谢。


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

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

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

如果您正在使用typescript,并且在安装所有节点模块后出现错误,请删除package-lock.json。然后运行npm-install。


如果所有其他方法都不适合你。。。尝试

npm link package_name

e.g

npm link webpack
npm link autoprefixer

e.t.c公司


我在使用实时服务器(使用Fullstack React书)时遇到了这个问题:

我一直得到:

错误:找不到模块“”/禁用浏览器缓存.js'...

我不得不调整我的包.json

发件人:“脚本”:{...“server”:“实时服务器公共--主机=本地主机--端口=3000--中间件=./disable browser cache.js”...}“脚本”:{收件人:...“server”:“实时服务器公共--主机=本地主机--端口=3000--中间件=../../disable browser cache.js”...}

请注意,相对路径似乎已断开/尴尬…/变为..//

我在这里发现了问题

此外,如果有人跟随这本书:

将packages.json中的devDependencies更改为:


"live-server": "https://github.com/tapio/live-server/tarball/master"

目前,从v1.2.0升级到v1.2.1

使用nvm很好。最好安装Node的v13.14(*v14+会带来其他麻烦)nvm安装v13.14.0nvm别名默认值v13.14.0使用npm i-g更新npmnpm@7.3.0运行:npm更新您也可以使用npm列表来查看依赖关系的层次结构。(出于某种原因,node 15+最新的npm默认只显示第一级深度-a la package.json。这使得默认命令毫无意义!您可以追加--depth=n)以使命令再次更有用)。您也可以使用npm审计。存在需要更新(chokidar和其他一些软件包的更新)到更新版本的问题。live服务器尚未更新以支持较新的相应nodev14库版本。

请在此处查看类似帖子


脚注:另一件事,当你进入JSX部分时,请在这里查看我的答案:https://stackoverflow.com/a/65430910/495157

当您到达:

具有道具、状态和子级的高级组件配置。P182+,节点版本13不支持某些依赖项。稍后也会添加相关结果。


rm package-lock.json
rm -r node_modules
npm i

这将解决问题并安装所有软件包。


在我的情况下,

npm install -D tslib @types/node

解决了我的问题,我就可以跑了

ts-node index.ts

成功地


在我的情况下,我没有使用正确版本的nvm。


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


显然,从这个问题来看,有很多可能的原因。

也许这会对某人有所帮助,希望没有人像我一样愚蠢地使用这种技术:

检查文件夹树中是否有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文件夹中找到依赖项。也许是因为导入和引用某些包的方式?

不用说,这是一场即将发生的灾难:)


我在升级节点版本并安装几个不同的软件包版本时遇到了这个问题。该项目创建了一个docker图像/容器来工作。

问题是,当我添加包并重建项目时,Docker映像没有被重新创建。正确的信息在我的本地package.json和package-lock.json文件中。

删除Docker映像而不仅仅是容器解决了我的问题。


逐步运行以下命令。它解决了我的问题:

npm缓存清理–强制rm package-lock.jsonrm-r节点模块npm i--保存--旧版对等deps


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

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

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

"extraResources": [
    "node_modules/puppeteer,
}