【问题标题】:npm packages not available when installed locallynpm 包在本地安装时不可用
【发布时间】:2017-09-20 03:41:24
【问题描述】:

我在一个网络应用程序上使用 npm,当使用一些需要终端命令才能运行的包时,我发现了一个问题,例如 nodemonconcurrently

我是通过

安装的
sudo npm install --save-dev nodemon

当我尝试通过以下方式使用它时:

nodemon ./server.js

我收到一个错误

找不到nodemon命令

和我同时使用的时候一样

我也试过了

sudo npm install --save nodemon 

它不起作用。

只有在全局安装时才有效

sudo npm install -g nodemon

本地安装时为什么不能使用?

注意:我可以在node_modules/.bin找到可执行文件

但是下面的这个也不能正常工作

node_modules/.bin/nodemon ./server.js

【问题讨论】:

标签: node.js npm npm-install nodemon npm-scripts


【解决方案1】:

全局包可以直接启动,因为它们默认保存在您的 PATH 目录中。如果您保存了一个包locally,您可以在node_modules/.bin/ 上看到它,正如您所提到的。所以如果你想运行一个可执行包,如果安装了locally,有两种方法可以实现你想要的:

  • 您可以通过终端以./node_modules/.bin/nodemon yourscript.js 运行它
  • 或者通过你的package.json文件中的npm scripts,你可以这样做:

    {
      "scripts": {
        "nodemon": "nodemon yourscript.js"
      }
    }  
    

    并执行npm run nodemon

第二种方法适用于全局或本地安装的两种软件包。

我更喜欢在本地安装包,因此我的其他应用不会受到影响,尤其是当我在每个项目中使用不同的包版本时。

更新

npm@5.2.0 开始,它带有一个名为npx 的二进制文件。因此,您可以通过npx [package] 在终端上运行特定的包,它会执行您的本地或全局npm 包。在您的情况下,它应该类似于npx nodemon server.js

【讨论】:

  • @PeterWilson 尝试在node_modules 之前添加./ 示例:./node_modules/.bin/nodemon server.js 您不必将./ 放在您的server.js 脚本中。
  • 仍然找不到命令.. 主要问题是访问nodemon 命令本身不在我的脚本文件的路径中
  • @PeterWilson 你确定你在本地安装了nodemon 吗?试试npm ls --depth=0 看看是否列出了nodemon。否则你必须安装它npm install --save-dev nodemon
  • 是的,它安装正确,我试过你的命令,我找到了
  • @PeterWilson 安装软件包时使用sudo 的任何特殊原因?尝试卸载nodemon,然后在没有sudo的情况下再次安装包,看看是否可以找到。
【解决方案2】:

要运行任何本地安装的 npm 模块(Mocha、Eslint、Nodemon 等),您现在可以使用 npx。试试npx nodemon server.js

我还建议在您的 package.json 中设置 main 以指向您要运行的脚本(默认为 index.js),这样您就可以运行 npx nodemonnodemon(如果全局安装)和它会知道要运行哪个脚本。

【讨论】:

    【解决方案3】:

    因为它在您的 node_modules/.bin 文件夹中,而不是您的 PATH 中。

    您可以使用./node_modules/.bin/nodemon$(npm bin)/nodemon 来调用nodemon。

    【讨论】:

      【解决方案4】:

      这是因为本地 node_modules 文件夹不在您的 PATH 中。有关更多详细信息,请参阅重复问题的链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-25
        • 1970-01-01
        • 1970-01-01
        • 2017-04-08
        • 1970-01-01
        • 2012-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多