node.js - npm 包在本地安装时不可用

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

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

我是通过

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

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

nodemon ./server.js

我得到一个错误

nodemon command not found

和我同时使用时一样

我也试过

sudo npm install --save nodemon 

它不起作用。

只有全局安装才有效

sudo npm install -g nodemon

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

注意:我可以在node_modules/.bin

找到可执行文件

但是下面的效果不太好

node_modules/.bin/nodemon ./server.js

最佳答案

全局包可以直接启动,因为它们默认保存在您的PATH目录中。如果您将包保存在 local 上,您可以在 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

关于node.js - npm 包在本地安装时不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43571466/

相关文章:

node.js - npm UNMET PEER DEPENDENCY 错误,无法安装 Braintree

node.js - Haste 模块映射中不存在模块 `expo`

node.js - Passport + JWT + Socket.IO 身份验证

node.js - TypeDI @Inject() 不起作用,但 Container.get() 起作用

npm - Cloudflare 页面部署 : Yarn install fails with 401 Unauthorized for fontawesome dependency

node.js - 如何在 jetty/tomcat 上部署基于 "create-react-app"的应用程序

node.js - gulp.js - 将参数从 gulp-watch 传递到 gulp-sass

node.js - 如何在 mongodb 中为深度嵌套数组编写更新查询?

node.js - npm安装无法正常工作。说我需要检查权限?

javascript - 如何在单个存储库中与其他团队共享本地 npm 包?