如何使用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模块(例如httpurl ),并且出现错误,如"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”。

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