4

我正在使用 npm 在 Web 应用程序上工作,但在使用某些需要终端命令才能运行的包时发现了一个问题,nodemon例如concurrently

我通过安装它

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
4

4 回答 4

9

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

  • 您可以通过终端运行它./node_modules/.bin/nodemon yourscript.js
  • 或者通过文件中的 npm scripts,您package.json可以执行以下操作:

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

    并执行npm run nodemon.

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

我更喜欢在本地安装包,所以我的其他应用程序不会受到影响,特别是如果我在每个项目中使用不同的包版本。

更新

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

于 2017-04-23T13:00:58.360 回答
4

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

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

于 2017-04-23T13:05:30.690 回答
1

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

在此处输入图像描述

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

于 2018-06-23T20:22:07.787 回答
-1

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

于 2017-04-23T13:01:08.000 回答