How do I resolve “Cannot find module” error using Node.js?
从GitHub下拉模块并按照说明构建它之后,我尝试使用以下方法将其拉入现有项目中:
1 | > npm install ../faye |
这似乎可以解决问题:
1 2 3 4 5 6 | > npm list /home/dave/src/server └─┬ [email protected] ├── [email protected] ├── [email protected] └── [email protected] |
但是Node.js找不到模块:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | > 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. (/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) |
我真的很想了解这里发生了什么,但我对于下一步该看哪里感到有点失落。 有什么建议?
使用
我通常在本地安装大多数软件包,以便它们与我的项目代码一起检入。
更新(3/2016):
我收到了很多反应,特别是我检查了我的代码所依赖的包。几天前,有人未发布他们所有的软件包(https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.kq9s64clp),这打破了React,Babel和几乎所有的东西其他。希望现在很清楚,如果你有生产代码,你就不能依赖NPM来实际维护你的依赖关系。
我有一个非常相似的问题。删除整个
1 2 | rm -rf node_modules npm install |
1 | npm install --save module_name |
例如,如果错误是:
{ [Error: Cannot find module '/root/.npm/form-data'] code: 'MODULE_NOT_FOUND' }
然后您可以通过执行命令
当第一个npm安装由于某种原因(npm的SIGINT)崩溃,或者延迟太长或数据已损坏时,会发生这种情况。
再次尝试npm安装不会解决问题。
npm首次检查出错了,所以最好选择删除文件并重新启动npm install。
对于TypeScript用户,如果要导入内置节点模块(例如
1 | npm install @types/node --save-dev |
该命令将NodeJS TypeScript定义导入到项目中,允许您使用Node的内置模块。
如果使用nvm,请检查是否为正确的Node.js版本编译了绑定到其他库的现有node_modules。
我遇到了同样的错误。原因如下:我们使用nvm,因为我们在服务器上运行两个应用程序,一个需要Node.js 5.6因为它使用node-gd(现在不在Node.js 6上运行),另一个需要Node.js 6. Node.js 6是apt-get安装。
我们还使用pm2工具进行部署。
因此,默认设置是当nvm无效时pm2进程启动,因此它使用了Node.js的apt-get安装(版本6)。所以主要的pm2守护进程以Node.js 6开头。如果我在fork模式下运行应用程序,它们会在不同的进程中启动,并且nvm设置生效。当我以群集模式运行应用程序时 - 它们继承非nvm环境。
因此,当我尝试切换到群集模式时,应用程序无法启动,因为为5.6编译的绑定失败并显示此消息。
当nvm setings生效时,我通过重启pm2来解决这个问题。还应该修复启动脚本。
从项目中删除
转到
1 | >myApp>npm install |
它将安装项目所需的所有依赖项模块。
当团队中的其他人在SVN中更新
1 2 3 4 5 6 | rm -rf node_modules rm package.json rm package-lock.json svn up npm install ng build --env=prod |
希望这有助于某人!
我昨天遇到了这个错误。花了一些时间才意识到
指定restler文件夹的路径,该文件夹位于node_modules文件夹中,如:var rest = require('。/ node_modules / restler');
这对我有用。
检查环境变量NODE_PATH是否设置正确并指向node_modules路径。 nodejs使用此变量来搜索库
如果您
在将基于
专家提示:
这个错误发生在我身上,同时对抗疲劳和轻微的疾病,因为我键入
收到的错误消息不够生气,不能提醒我自己的愚蠢行为!
在我的情况下,我有
1 | npm install redux --save |
我可以再添加一个地方来检查;我试图使用的包是我发布到私有NPM仓库的另一个我自己的包。我忘了在package.json中正确配置'main'属性。所以,包在那个消费包的node_modules文件夹中,但我得到了"找不到模块"。我花了几分钟才意识到自己的错误。 :-(
我试图发布自己的包,然后将其包含在另一个项目中。我有这个问题,因为我已经构建了第一个模块。我使用ES2015导出创建模块,例如我们说模块看起来像:
1 2 3 | export default function(who = 'world'){ return `Hello ${who}`; } |
用Babel编译之后发布:
1 2 3 4 5 6 7 8 9 10 11 12 | '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; }; |
所以在
实际上导入了包。
希望有所帮助!
刚发现一个不寻常的场景可能对某人有用,并且有点像红鲱鱼。
我也得到了Can not Find Module错误,但奇怪的是,在我的本地(Mac托管)Node.js环境中,一切都运行良好。只有在我们的Linux服务器上部署代码时才会出现此问题。
嗯......事实证明这是一个错字(显然)基于Mac的Node.js安装非常乐意忽略。
包含看起来像这样:
1 | var S3Uploader = require('./S3Uploader.class'); |
但实际文件名为"s3Uploader.class.js"
注意代码和文件名之间's'与'S'的套管差异。
所以 - 奇怪的是,这里没有其他解决方案可以解决您的问题,请检查您是否错误地排除了所包含文件名中的字符! :)
和DUH!
使用
已将单个文件转换为文件夹。
观察者似乎没有看到新文件夹,现在模块丢失了。
通过重新启动进程修复。
也许像我一样,你将Express中的'view engine'设置为不存在的引擎,或者尝试使用未注册的模板引擎。
确保您使用:
app.engine('engine name',engine)
app.set('view engine','engine name')
请安装新的CLI v3(npm install -g ionic @ latest)。
如果此问题仍然是CLI v3中的问题。谢谢!
删除node / npm然后重新安装稳定(不是最新)的版本对我有用。
1 2 3 | sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*} https://nodejs.org/en/download/ |
如果已成功安装软件包,请转到node_modules文件夹,然后检查文件和路径。然后导入。
希望这可以帮助。
首先,是的,我的答案的一部分肯定有助于解决OP发布的错误。其次,在尝试下面的步骤后,我遇到了其他一些错误,因此,也编写了这些错误的解决方案。
(Psst!我不确定我是否成功帮助解决了上述错误,或者我是否违反了一些规则或格式的回答,但是我遇到了上述错误和其他一些问题,我花了很多时间才找到这些错误的正确解决方案。我正在编写完整的解决方案,因为如果其他人也面临这些错误,那么他希望在这里找到解决方案。)
因此,添加并详细说明PrashanthiDevi提供的答案,并添加我的个人经验,这里是:
我是整个e2e和单元测试部分的新手。我从Protractor开始研究这个部分。现在我已经有了编写测试的文件,但我必须运行测试。
我已经安装了所有必需的软件和工具,但是当我最初运行用于运行测试的代码
该人建议在我的项目文件夹中运行命令
这样做的原因是更新项目文件夹中的node-modules文件夹,其中包含所有必需和必需的文件和依赖项。
(以下部分可能与此问题无关,但如果有人遇到我遇到的相同情况,可能会有所帮助。)
上面的步骤肯定解决了我以前的错误,但扔了一个新错误!这次错误是
ode_modules\protractor\selenium\chromedriver'
但是,这个错误的解决方案对我来说非常愚蠢(而且很有趣)。我已经在我的selenium文件夹中有chromedriver文件了。但是,事实证明上述错误即将发生,因为我的chromedriver文件位于selenium文件夹内,而不是在chromedriver文件夹中。因此,创建一个chromedriver文件夹并复制chromedriver文件解决了我的问题!
此外,对于错误:等待WebDriver服务器超时,您可以将此行代码添加到
希望这可以帮助!
仅运行以下命令:
1 | npm install |
它将在
我得到了解决这个问题的简单解决方案。
只需删除C: Users UserName AppData roaming npm
然后安装节点。
现在你的问题将得到解决。
更改目录并指向当前项目文件夹,然后"npm install"。
。
这会将所有依赖项和模块安装到项目文件夹中。