从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)
我真的很想知道这里发生了什么,但我对于下一步的看法感到有点失落。有什么建议吗?
答案 0 :(得分:451)
使用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来实际维护你的依赖关系。
答案 1 :(得分:387)
我有一个非常类似的问题。删除整个node_modules
文件夹并重新安装对我有用:
rm -rf node_modules
npm install
答案 2 :(得分:75)
npm install --save module_name
例如,如果错误是:
{[错误:无法找到模块&#39; /root/.npm/form-data']代码:&#39; MODULE_NOT_FOUND&#39; }
然后您可以通过执行命令npm install --save form-data
解决此问题。
答案 3 :(得分:17)
当第一个npm安装由于某种原因(npm的SIGINT)崩溃,或者延迟太长或数据已损坏时,会发生这种情况。 尝试npm安装再次无法解决问题。
npm首次检查出错了,所以最好选择删除文件并重新启动npm install。
答案 4 :(得分:15)
对于TypeScript用户,如果要导入内置节点模块(例如http
,path
或url
),则会收到错误,例如{{1}然后可以通过运行
"Cannot find module "x"
该命令会将NodeJS TypeScript定义导入到您的项目中,允许您使用Node的内置模块。
答案 5 :(得分:8)
如果您使用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来解决这个问题。还应该修复启动脚本。
答案 6 :(得分:6)
从项目中删除defaultConfig {
applicationId "com.example.me"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
multiDexEnabled true
}
根文件夹(例如:node_module
)。
转到myApp
文件夹,然后在终端
myApp
它将安装项目所需的所有依赖项模块。
答案 7 :(得分:5)
rm package-lock.json
rm -r node_modules
npm i
这应该可以解决问题并安装所有软件包。
答案 8 :(得分:4)
昨天我遇到了这个错误。花了一些时间才意识到private boolean switchChecked = false;
public void handleSwitchClick(boolean checked) {
if (checked) {
switchChecked = true;
// do something
else {
switchChecked = false;
// do something else
}
}
中的main
条目指向了我移动的文件。一旦我更新了错误消失并且包工作正常。
答案 9 :(得分:4)
指定restler文件夹的路径,该文件夹位于node_modules文件夹中,如:var rest = require('。/ node_modules / restler');
这对我有用。
答案 10 :(得分:3)
当团队中的其他人在SVN中更新package.json
时,我遇到了同样的问题。仅删除node_modules
目录没有帮助。我是如何解决这个问题的:
rm -rf node_modules
rm package.json
rm package-lock.json
svn up
npm install
ng build --env=prod
希望这有助于某人!
答案 11 :(得分:3)
检查环境变量NODE_PATH是否设置正确并指向node_modules路径。 nodejs使用此变量来搜索库
答案 12 :(得分:2)
如果require
某个模块的package.json中包含缺少或不正确的main
字段,则可能会遇到此错误。虽然安装了模块本身,但npm / node必须使用单个.js文件作为模块的入口点。如果main
字段不存在,则默认在模块的文件夹中查找index.js
。如果您的模块的主文件不称为index.js,则它将无法require
。
将基于browserify
的模块转换为CommonJS require
模块时发现; browserify
并不关心丢失的main
字段,因此错误未被注意。
答案 13 :(得分:2)
如果其他所有方法都不适合您... 试试
npm link package_name
例如
npm link webpack
npm link autoprefixer
e.t.c
答案 14 :(得分:2)
专业提示:
这个错误发生在我身上,同时对抗疲劳和轻度疾病,因为我输入了node blah
而不是npm blah
。
收到的错误消息并不足以引起我自己的愚蠢行为!
答案 15 :(得分:1)
我可以再添加一个地方进行检查;我试图使用的包是我发布到私有NPM仓库的另一个我自己的包。我忘了配置主要的&#39; package.json中的属性正确。因此,包在那个消费包的node_modules文件夹中,但我得到了#34;找不到模块&#34;。我花了几分钟才意识到自己的错误。 : - (
答案 16 :(得分:1)
我在使用 live-server
(使用 Fullstack React 书籍)时遇到了这个问题:
我一直得到:
<块引用>Error: Cannot find module './disable-browser-cache.js'
...
我不得不调整我的 package.json
来自:
“脚本”:{ ... "server": "live-server public --host=localhost --port=3000 --middleware=./disable-browser-cache.js" ... } “脚本”:{
致:
... "server": "live-server public --host=localhost --port=3000 --middleware=../../disable-browser-cache.js" ... }
请注意相对路径似乎已损坏/尴尬... ./
变为 ../../
我发现了问题 here
另外,如果有人跟随那本书:
"live-server": "https://github.com/tapio/live-server/tarball/master"
目前从 v1.2.0 升级到 v1.2.1
nvm install v13.14.0
nvm alias default v13.14.0
npm i -g npm@7.3.0
更新 npmnpm update
npm list
查看依赖关系的层次结构。 (出于某种原因,节点 15 + 最新的 npm 默认仅显示第一级深度 - 一个 la package.json。这使得默认命令毫无意义!您可以附加 --depth=n
)以使命令再次变得更有用)。npm audit
。存在需要(更新 chokidar
和其他一些软件包)更新版本的问题。 live-server
尚未更新以支持较新的相应 node v 14 库版本。查看类似帖子 here
脚注: 当您进入 JSX 部分时的另一件事,请在此处查看我的答案: https://stackoverflow.com/a/65430910/495157
当您到达时:
答案 17 :(得分:1)
在我的情况下,我有UNMET PEER DEPENDENCY redux@^3.0.0
导致此错误消息,请参阅所有这些消息并使用--save再次安装缺少的模块
npm install redux --save
答案 18 :(得分:1)
如果您正在使用打字稿,并且在安装所有节点模块后遇到错误,请删除package-lock.json
。然后运行npm install
。
答案 19 :(得分:0)
请安装新的CLI v3(npm install -g ionic @ latest)。
如果此问题在CLI v3中仍然是问题。谢谢!
答案 20 :(得分:0)
就我而言,我没有使用正确版本的 nvm。
答案 21 :(得分:0)
就我而言,
npm install -D tslib @types/node
解决了我的问题,然后我就可以运行了
ts-node index.ts
成功。
答案 22 :(得分:0)
在Appsome Solutions中,我们的打字稿项目配置存在相同的问题,并在tsconfig.json中添加了"moduleResolution": "node",
来解决了这个问题。
答案 23 :(得分:0)
每次package-lock.json
更改时,npm ci
应该在运行代码之前运行。假设代码以start
npm脚本开头,npm ci
可以使用以下prestart
npm脚本自动运行
{
"scripts": {
"prestart": "npx @olegjs/on-change --file package-lock.json npm ci"
}
}
答案 24 :(得分:0)
如果软件包安装成功,请转到您的node_modules文件夹,然后检查文件和路径。然后导入。 希望这会有所帮助。
答案 25 :(得分:0)
删除node / npm,然后重新安装稳定的版本(不是最新版本)对我有用。
sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}
https://nodejs.org/en/download/
答案 26 :(得分:0)
我试图发布自己的包,然后将其包含在另一个项目中。我有这个问题,因为我已经构建了第一个模块。我使用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;
};
所以在npm install module-name
之后的另一个项目(没有ES2015)我不得不做
var hello = require('module-name').default;
实际上已导入包。
希望有所帮助!
答案 27 :(得分:0)
也许和我一样,你设置了“查看引擎&#39;表示不存在的引擎,或试图使用未注册的模板引擎。
确保您使用:
app.engine('engine name',engine)
app.set('view engine','engine name')
答案 28 :(得分:0)
刚刚找到一个可能对某人有用的不寻常场景,并且有点像红色鲱鱼。
我也得到了Can not Find Module错误,但奇怪的是,在我的本地(Mac托管)Node.js环境中,一切都运行良好。只有在我们的Linux服务器上部署代码时才会出现此问题。
嗯......事实证明这是一个错字(显然)基于Mac的Node.js安装非常乐意忽略。
包含如下:
var S3Uploader = require('./S3Uploader.class');
但实际文件名为“s3Uploader.class.js”
注意代码和文件名之间's'与'S'的套管差异。
所以 - 奇怪的是,这里没有其他解决方案可以解决您的问题,请检查您是否错误地排除了所包含文件名中的字符! :)
和DUH!
答案 29 :(得分:0)
将 webpack
与 webpack-dev-middleware
一起使用时遇到此问题。
已将单个文件转换为文件夹。
观察者似乎没有看到新文件夹,现在该模块丢失了。
通过重新启动过程来修复。
答案 30 :(得分:-1)
首先,是的,我的答案的一部分肯定有助于解决OP发布的错误。其次,在尝试下面的步骤之后,我遇到了其他一些错误,因此,也写了解决方案。
(Psst!我不确定我是否已成功帮助解决上述错误,或者我是否违反了一些规则或格式的回答,但我遇到了上述情况错误和其他一些问题,我花了很多时间为这些错误找到合适的解决方案。我正在编写完整的解决方案,因为如果其他人也面临这些错误,那么他希望得到一个解决方案。)
因此,添加并详细阐述PrashanthiDevi提供的答案,并添加我的个人经验,这是:
我是整个e2e和单元测试部分的新手。我开始从Protractor开始研究这部分内容。现在我已经有了编写测试的文件,但我必须运行测试。
我已经安装了所有必需的软件和工具,但是当我最初运行用于运行测试的代码gulp itest
时,我得到了这个&#39;找不到模块&#39;错误即可。在经历了关于SO的许多不同问题后,我找到了一个我认为可以帮助解决问题的答案。
此人建议在我的项目文件夹中运行命令npm install
。
执行此操作的原因是更新项目文件夹中的 node-modules 文件夹,其中包含所有必需和必要的文件和依赖。
(以下部分可能与此问题无关,但如果有人遇到我遇到的相同情况,可能会有所帮助。)
上面的步骤肯定已经解决我以前的错误,但是又扔了一个新错误!这次错误为 Could not find chromedriver at '..\node_modules\protractor\selenium\chromedriver'
。
然而,这个错误的解决方案对我来说非常愚蠢(和有趣)。我的 selenium 文件夹中已经有chromedriver文件。但是,结果发现上述错误正在发生,因为我的 chromedriver 文件位于 selenium 文件夹中,不在 <内strong> chromedriver 文件夹。因此,创建 chromedriver 文件夹并复制chromedriver文件解决了我的问题!
此外,对于错误:等待WebDriver服务器超时,您可以将代码行添加到 conf.js exports.config{}
内的文件:
seleniumAddress: 'http://localhost:8080/'
希望这有帮助!
答案 31 :(得分:-2)
rm -rf node_modules
npm install
npm fund
对我有用。
答案 32 :(得分:-4)
仅运行以下命令:
npm install
它将在node_modules
文件夹中安装所有必需的模块。
答案 33 :(得分:-4)
我得到了解决此问题的简单解决方案。
只需删除C:\ Users \ UserName \ AppData \ Roaming \ npm \
然后安装节点。
现在你的问题将得到解决。
答案 34 :(得分:-43)
更改目录并指向当前项目文件夹,然后&#34; npm install&#34;。
这会将所有依赖项和模块安装到项目文件夹中。