【问题标题】:Error: Cannot find module '../lib/cli'错误:找不到模块“../lib/cli”
【发布时间】:2015-03-28 23:46:13
【问题描述】:

我对 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

这里是调试日志:

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 ]

还有这个:

☹ ~/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

我认为这可能是路径问题,因此我将export NODE_PATH=/opt/lib/node_modules 添加到我的 .zshrc 文件中并获取了它,这似乎没有任何影响。

有什么想法可以解决这个问题或尝试更好地了解实际发生的情况吗?

【问题讨论】:

    标签: javascript npm


    【解决方案1】:

    我的解决方案是删除目录 /node_modules/,然后使用 npm install 进行全新安装。

    【讨论】:

    • 可以确认这在我更改了根目录名称后有效(并且npm run &lt;script&gt; 停止工作
    • rm -rf node_modules/ &amp;&amp; npm i 也是我的解决方案。 :)
    • 对于那些想知道(至少一个原因)原因的人 - 当您复制 node_modules 目录(例如使用 cp)时可能会发生这种情况。默认情况下,.bin 目录包含已安装包的符号链接。 cp 默认情况下不保留链接,因此您最终会在 .bin 目录中找到实际文件。这就是破坏 require() 函数的原因。吹走node_modules 并运行npm install 会恢复应该存在的符号链接。
    • 别忘了也擦除 package-lock.json。 rm package-lock.json。大家一起:rm -rf node_modules/ &amp;&amp; rm package-lock.json &amp;&amp; npm i
    【解决方案2】:

    Nodedemon 正在它自己的目录中寻找它的../lib/cli 文件夹,但没有找到它。你可能有一个搞砸的安装。当您使用 finder 将项目从一个文件夹复制到另一个文件夹时,有时会发生这种情况。

    如果您删除了 node_modules 目录并从头开始重新安装,您应该恢复该文件夹。

    cd your_project_folder
    rm -rf node_modules
    npm install
    

    编辑:

    你也可以使用纱线。

    cd your_project_folder
    rm -rf node_modules
    yarn
    

    【讨论】:

      【解决方案3】:

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

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

      brew uninstall node
      sudo chown -R $(whoami) /usr/local/*
      brew cleanup
      brew install node
      

      【讨论】:

      • 这最终也对我有用。谢谢。
      • 在无关项目中获得相同信息的任何人的最佳解决方案!
      【解决方案4】:

      我找到了解决办法。我必须在全球范围内安装 nodemon:npm install nodemon -g

      【讨论】:

      • 我整整五分钟都把它读成“没有恶魔”......如果有人会写那个包的话。
      • 我不喜欢全局 npm 安装。如果nodemon 是项目的依赖项,我宁愿将./node_modules/.bin 添加到我的$PATH
      • npmpackage.json"scripts" 部分内执行此操作。所以你可以有类似"start-dev": "nodemon --exec DEBUG=app* node_modules/.bin/babel-node -- app/start.js"的东西。
      【解决方案5】:

      我遇到了这个错误,把它留在这里以防它帮助任何人。

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

      偶数

      npm -v
      

      会给出错误(因此与 node_modules 无关)。 最后通过使用来自here 的包管理器安装节点来修复它。

      【讨论】:

        【解决方案6】:

        您可以尝试执行以下操作

        npm uninstall nodemon
        npm install nodemon
        

        【讨论】:

          【解决方案7】:

          ma​​cOS BigSur 中,我必须先清理节点模块文件夹:

          sudo rm -rf /usr/local/lib/node_modules
          

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

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

          brew postinstall node
          

          我终于可以在我的 mac 中看到 npm:

          npm -v
          7.21.1
          

          【讨论】:

            【解决方案8】:

            因此,npm 在 package.json 文件中声明了可执行文件的模块和 node_modules/.bin 目录之间创建了一个符号链接。

            阅读from npm了解。

            博士。 Axel Rauschmayer explains more here.

            当使用 macos finder、windows 文件资源管理器或命令行复制项目目录及其 其 node_modules 文件夹时,此符号链接将被破坏。因此,对 node_modules/.bin 目录上的符号链接文件的调用无法命中假定的包。

            在您的情况下,它是 nodemon 。手动修复此运行

            ln -s ./node_modules/nodemon/bin/nodemon.js ./node_modules/.bin/nodemon

            对于任何其他包,检查它的 package.json 中的 "bin": { } 键并查看符号链接的可执行文件,然后修改 上面的链接命令并按照。

            【讨论】:

              【解决方案9】:
              brew uninstall node
              brew upgrade 
              brew install node
              brew link --overwrite node 
              npm -v
              

              为我工作。

              【讨论】:

              • 请补充说明
              【解决方案10】:

              遇到同样的问题。

              我使用protractor --elementExplorer,它对我有用

              【讨论】:

                【解决方案11】:

                Protractor 已更改位置。lib/built protractor 文件现在位于包的构建目录中。您应该能够将您的 IDE 定向到 built/cli.js 这对我有用。

                查看他们的 Github 问题链接:

                https://github.com/angular/protractor/issues/3089

                【讨论】:

                  【解决方案12】:
                  brew link --overwrite node
                  

                  仅此而已。无需卸载。

                  【讨论】:

                    【解决方案13】:

                    在使用自制软件安装 nodejs 来修复它后我遇到了同样的错误我已经从它的官方网站下载并安装了 nodejs。现在一切正常。

                    【讨论】:

                      猜你喜欢
                      • 2018-11-02
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-04-10
                      • 1970-01-01
                      • 2015-05-15
                      • 2014-10-03
                      • 2018-02-26
                      • 2016-03-31
                      相关资源
                      最近更新 更多