在本地安装时,npm软件包不可用

时间:2017-04-23 12:57:52

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

我在网络应用上使用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

4 个答案:

答案 0 :(得分:4)

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

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

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

    并执行npm run nodemon

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

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

更新

npm@5.2.0之后,它附带一个名为npx的二进制文件。因此,您只需npx [package]即可在终端上运行特定软件包,并执行本地或全局npm软件包。在你的情况下,它应该是npx nodemon server.js

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

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

enter image description here

我还建议在package.json中将main设置为指向您要运行的脚本(默认情况下为index.js),因此您可以只运行npx nodemonnodemon (如果已全局安装),它将知道要运行哪个脚本。

答案 3 :(得分:0)

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

相关问题