如何使用Node.js解决“无法find模块”错误?
从GitHub下拉一个模块并按照指示来构build它,我尝试使用以下命令将其拉入现有项目:
> 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)
我真的很想知道这里发生了什么事情,但是在接下来的地方我有点不知所措。 有什么build议么?
使用npm install
将模块安装到当前目录中(在名为node_modules
的子目录中)。 app.js位于home/dave/src/server/
? 如果不是,并且想从任何目录使用该模块,则需要使用npm install -g
全局安装它。
我通常在本地安装大部分软件包,以便与我的项目代码一起签入。
更新(3/2016):
我收到了很多响应,特别是我检查我的代码依赖的包。 几天前,有人没有发表所有他们的软件包( https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.kq9s64clp ),这打破了React,Babel和几乎所有的东西其他。 希望现在很清楚,如果你有生产代码,你不能依靠NPM实际维护你的依赖关系。
我有一个非常类似的问题。 删除整个node_modules
文件夹并重新安装为我工作:
rm -rf node_modules npm install
npm install --save module_name
例如,如果错误是:
{[错误:找不到模块'/root/.npm/form-data']代码:'MODULE_NOT_FOUND'}
那么你可以通过执行命令npm install --save form-data
来解决这个问题。
当第一个npm install由于某种原因(npm的SIGINT)崩溃,或者延迟太长,或者数据损坏时,会发生这种情况。 再次尝试npm安装不会保存问题。
首先检查npm有什么问题,所以最好的select是删除文件并重新启动npm install。
如果使用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(版本6)的apt-get安装。 所以主pm2守护进程开始Node.js 6.如果我在fork模式下运行的应用程序,他们开始在单独的进程和nvm设置是有效的。 当我以集群模式运行应用程序时,它们inheritance非nvm环境。
所以当我尝试切换到集群模式时,应用程序启动失败,因为为5.6编译的绑定失败并显示此消息。
当nvm设置有效时,我通过重新启动pm2来解决这个问题。 还应该修复启动脚本。
从您的项目中删除您的node_module
根文件夹(例如: myApp
)。 转到myApp
文件夹,然后从terminal键入以下命令
>myApp>npm install
它将安装您的项目所需的所有依赖项模块。
指定restler文件夹的path,该文件夹位于node_modules文件夹内,如下所示:var rest = require('./ node_modules / restler');
这对我有效。
我昨天经历了这个错误。 花了我一段时间才意识到package.json
中的main
条目是指向我移动的文件。 一旦我更新,错误消失,包工作。
专家提示:
这个错误发生在我身上,同时又是疲劳和轻微的疾病,因为我input了node blah
而不是npm blah
。
收到的错误信息是不够生气,警惕我自己的愚蠢!
当团队中的其他人更新了SVN中的package.json
时,我遇到了同样的问题。 仅仅删除node_modules
目录没有帮助。 我如何解决这个问题是:
rm -rf node_modules rm package.json rm package-lock.json svn up npm install ng build --env=prod
希望这可以帮助别人!
对于TypeScript用户,如果您要导入Node模块(例如http
或url
),并且出现错误,如"Cannot find module "x"
则可以通过运行
npm install @types/node --save-dev
该命令将NodeJS TypeScript定义导入到您的项目中,允许您使用Node模块。
我试图发布我自己的软件包,然后将其包含在另一个项目中。 我有这个问题,因为我已经build立了第一个模块。 我使用ES2015导出创build模块,例如可以说模块看起来像这样:
export default function(who = 'world'){ return `Hello ${who}`; }
经过巴贝尔编译并出版之前:
'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; };
所以在npm install module-name
另一个项目(无ES2015)的npm install module-name
,我不得不这样做
var hello = require('module-name').default;
要真正得到导入的包。
希望有所帮助!
在使用webpack-dev-middleware
使用webpack
时遇到此问题。
已经把一个文件转换成一个文件夹 。
观察者似乎没有看到新的文件夹,现在模块已经丢失。
通过重新启动进程来修复。
刚刚发现一个不寻常的场景,可能对某人有用,而且是一种红鲱鱼。
我也得到了无法find模块错误,但奇怪的是,我的本地(Mac托pipe)Node.js环境中的一切工作完美。 只有在我们的Linux服务器上部署代码时,才会出现此问题。
那么…原来是一个错误的(显然)基于Mac的Node.js安装是完全乐意忽略。
包括看起来像这样:
var S3Uploader = require('./S3Uploader.class');
但实际的文件被称为“s3Uploader.class.js”
注意代码和文件名之间's'和'S'的套pipe差异。
所以 – 奇怪的是,这里其他解决scheme都没有解决你的问题,三重检查你是不是错误的包装你的文件中的字符! 🙂
和DUH!
如果您require
在package.json中缺less或不正确的main
字段的模块,可能会遇到此错误。 虽然模块本身已安装,但npm / node必须使用一个.js文件作为模块的入口点。 如果main
字段不在那里,它默认在你的模块的文件夹中查找index.js
。 如果你的模块的主文件不叫做index.js,它将不能require
它。
在将基于浏览器的模块转换为CommonJS require
模块时发现; browserify
并不关心失踪的main
,所以错误没有被人注意。
我可以再加一个地方来检查; 我试图使用的包是另一个我自己的包,我已经发布到私人NPM回购。 我忘记了正确configurationpackage.json中的'main'属性。 所以,软件包在消费包的node_modules文件夹中,但我得到“无法find模块”。 花了我几分钟才明白我的错误。 🙁
在我的情况下,我有UNMET PEER DEPENDENCY redux@^3.0.0
导致此错误消息,请参阅所有这些和安装缺less的模块再次使用–save
npm install redux --save
首先,是的,我的一部分答案肯定有助于解决OP发布的错误 。 其次,在尝试了下面的步骤之后,我遇到了一些其他的错误,所以也写了这些解决scheme。
(嘘!我不知道我是否成功地帮助解决了上述错误,或者如果我已经打破了一些规则或格式的回答,但是我面对上述错误和其他一些错误,我花了很多时间find这些错误的正确的解决scheme,我正在写完整的解决scheme,因为如果别人也面临这些错误,那么他会希望在这里得到一个解决scheme。
因此,增加并详细说明PrashanthiDevi提供的答案,并加上我个人的经验,这里是:
我是整个e2e和unit testing部分的新手。 我开始从量angular器看这部分。 现在我已经有了写testing的文件,但是我必须运行testing。
我已经安装了所有必需的软件和工具,但是当我最初运行代码来运行testing时, gulp itest
,我得到了这个'无法find模块'的错误 。 在经历了许多不同的问题之后,我发现了一个我认为可以帮助解决问题的答案。
该人曾build议在我的项目文件夹中运行命令npm install
。
这样做的理由是更新我们的项目文件夹中的node-modules文件夹,其中包含所有必需和必需的文件和依赖关系。
(下面的部分可能与这个问题无关,但如果有人遇到我面对的相同情况,可能会有所帮助。)
上面的步骤肯定解决了我以前的错误,但抛出了一个新的! 这一次的错误是Could not find chromedriver at '..\node_modules\protractor\selenium\chromedriver'
。
然而,这个错误的解决scheme对我来说很愚蠢(也很搞笑)。 我已经在我的selenium文件夹中的chromedriver文件。 但是,事实certificate,上述错误是因为我的chromedriver文件在selenium文件夹内,而不是在 chromedriver文件夹内。 所以,创build一个chromedriver文件夹和复制chromedriver文件解决了我的问题!
此外,对于错误:超时等待WebDriver服务器 ,您可以将此行代码添加到exports.config exports.config{}
conf.js文件:
seleniumAddress: 'http://localhost:8080/'
希望这可以帮助!
我得到了简单的解决scheme来解决这个问题。
只要删除C:\ Users \ UserName \ AppData \ Roaming \ npm \
然后安装节点。
现在你的问题将得到解决。
仅运行以下命令:
npm install
它会将所有必需的模块安装在node_modules
文件夹中。
我通过从system32文件夹(Windows)将我的package.json文件复制到我的项目文件夹中解决了这个问题。 然后你应该改变目录并指向你的项目文件夹和“npm install”。
这将把所有的依赖和模块安装到你的项目文件夹中。