错误:找不到模块'../lib/cli'

Noa*_*ark 41 javascript npm

我是javascript开发的新手,当我通过backbone_blueprints书时,我遇到了以下错误.这是我得到的错误:

> simple-blog@0.1.0 start /Users/noahc/Projects/backbone_blueprints/blog
> nodemon server.js


module.js:340
    throw err;
          ^
Error: Cannot find module '../lib/cli'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/Users/noahc/Projects/backbone_blueprints/blog/node_modules/.bin/nodemon:3:11)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)

npm ERR! Darwin 14.1.0
npm ERR! argv "node" "/usr/local/bin/npm" "start"
npm ERR! node v0.10.33
npm ERR! npm  v2.1.11
npm ERR! code ELIFECYCLE
npm ERR! simple-blog@0.1.0 start: `nodemon server.js`
npm ERR! Exit status 8
npm ERR! 
npm ERR! Failed at the simple-blog@0.1.0 start script 'nodemon server.js'.
npm ERR! This is most likely a problem with the simple-blog package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     nodemon server.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls simple-blog
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/noahc/Projects/backbone_blueprints/blog/npm-debug.log
? ~/Projects/backbone_blueprints/blog npm install                                                                   ruby-2.1.3
npm WARN package.json simple-blog@0.1.0 No repository field.
npm WARN package.json simple-blog@0.1.0 No README data
Run Code Online (Sandbox Code Playgroud)

这是调试日志:

0 info it worked if it ends with ok 
1 verbose cli [ 'node', '/usr/local/bin/npm', 'install' ]
2 info using npm@2.1.11
3 info using node@v0.10.33
4 verbose node symlink /usr/local/bin/node
5 error install Couldn't read dependencies
6 verbose stack Error: ENOENT, open '/Users/noahc/Projects/backbone_blueprints/package.json'
7 verbose cwd /Users/noahc/Projects/backbone_blueprints
8 error Darwin 14.1.0
9 error argv "node" "/usr/local/bin/npm" "install"
10 error node v0.10.33
11 error npm  v2.1.11
12 error path /Users/noahc/Projects/backbone_blueprints/package.json
13 error code ENOPACKAGEJSON
14 error errno 34 
15 error package.json ENOENT, open '/Users/noahc/Projects/backbone_blueprints/package.json'
15 error package.json This is most likely not a problem with npm itself.
15 error package.json npm can't find a package.json file in your current directory.
16 verbose exit [ 34, true ]
Run Code Online (Sandbox Code Playgroud)

还有这个:

? ~/Projects/backbone_blueprints/blog which node                                                                    ruby-2.1.3
/usr/local/bin/node
? ~/Projects/backbone_blueprints/blog which npm                                                                     ruby-2.1.3
/usr/local/bin/npm
Run Code Online (Sandbox Code Playgroud)

我认为它可能是一个路径问题,所以我添加export NODE_PATH=/opt/lib/node_modules到我的.zshrc文件并获取它,这似乎没有影响.

无论如何我都可以解决这个问题,或者试着更好地了解实际发生的事情?

小智 76

我的解决方案是删除目录/ node_modules /并在之后进行全新安装npm install.

  • `rm -rf node_modules/&& npm i`也是我的解决方案.:) (11认同)
  • 对于那些想知道(至少有一个原因)原因的人来说 - 当你复制一个`node_modules`目录时(例如使用`cp`)就会发生这种情况.默认情况下,`.bin`目录包含已安装软件包的符号链接.`cp`默认不保留链接,因此你最终会得到`.bin`目录中的实际文件.这就是打破require()函数的原因.吹掉`node_modules`并运行`npm install`会恢复应该存在的符号链接. (7认同)
  • 不要忘记同时擦除 package-lock.json。`rm package-lock.json`。全部在一起:`rm -rf node_modules/ &amp;&amp; rm package-lock.json &amp;&amp; npm i` (4认同)

小智 29

对我来说 npm 坏了,可能是因为我在某个时候用 sudo 运行了它。

我需要修复 brew、升级/更新

brew uninstall node
sudo chown -R $(whoami) /usr/local/*
brew cleanup
brew install node
Run Code Online (Sandbox Code Playgroud)

  • 这有效,谢谢 (3认同)

sup*_*ary 24

Nodedemon正在../lib/cli其自己的目录中查找其文件夹而未找到它.你可能搞乱了.当您使用finder将项目从一个文件夹复制到另一个文件夹时,有时会发生这种情况.

如果您吹掉node_modules目录并从头重新安装,则应该恢复该文件夹.

cd your_project_folder
rm -rf node_modules
npm install
Run Code Online (Sandbox Code Playgroud)


Noa*_*ark 7

我找到了解决方法。我必须全局安装nodemon:npm install nodemon -g

  • 我读了整整五分钟,认为“没有恶魔”……如果有人会写那个包就好了。 (3认同)

Pam*_*Pam 6

我有这个错误,把它留在这里以防它对任何人有帮助。

我安装了yarn,显然搞砸了我的节点安装,试图通过卸载东西来修复它,弄得一团糟。Brew 不会成功安装节点(旧操作系统可能不在 LTS 中,从源代码安装不会使 npm 工作)。

甚至

npm -v
Run Code Online (Sandbox Code Playgroud)

会给出错误(所以与 node_modules 无关)。最后通过使用这里的包管理器安装节点来修复它。


Aru*_*P M 6

macOS BigSur中,我必须首先清理节点模块文件夹:

sudo rm -rf /usr/local/lib/node_modules
Run Code Online (Sandbox Code Playgroud)

注意:我需要 sudo 的原因是某些文件夹需要特殊权限才能删除它们。

删除 node_modules 后,我通过以下方式重新安装了 npm 包:

brew postinstall node
Run Code Online (Sandbox Code Playgroud)

最后我能够在我的 mac 上看到 npm 了:

npm -v
7.21.1
Run Code Online (Sandbox Code Playgroud)


Cha*_*ira 5

您可以尝试执行以下操作

npm uninstall nodemon
npm install nodemon
Run Code Online (Sandbox Code Playgroud)