繁体   English   中英

所有未全局安装的npm软件包都无法直接执行

[英]All the npm package not installed globally can't be executed directly

症状:

我无法直接执行未全局安装的npm软件包。 但是我可以通过npm scripts执行它。 如何解决?

例如:我在项目下安装了gulp

npm install gulp --save-dev

然后我尝试通过执行

gulp
zsh: command not found: gulp

但是如果我向package.json添加一个npm script

  "scripts": {
    "test": "mocha --require intelli-espower-loader && gulp test",
    "start": "gulp"
  },

然后跑

npm start

它可以毫无问题地执行。

PS与mocha软件包存在相同的问题,我无法直接执行mocha ,但可以毫无问题地执行npm test

把招工广告:

我该如何解决该问题?

注意:

我并不是说要全局执行它们,而只是想在项目下执行它们。

我不知道哪里出了问题,但是它们不久前就可以执行,只是最近不起作用!

除了@Ion的答案:您可能需要将路径添加到环境变量。 在Windows OS中,它将为%AppData%\\npm 对于本地安装的软件包,您应该能够像

.\\node_modules\\.bin\\gulp

如果要全局执行它们,请使用-g标志进行安装

npm install gulp -g

要直接运行,您还可以执行./node_modules/.bin/gulp

这是因为未全局安装的软件包不会在根node_modules文件夹中创建引用。 如果要专门使用本地安装的版本在终端上全局运行,请转到环境变量并将路径设置为./node_modules/gulp/bin/gulp.js或将npm配置为使用上述位置作为gulp并执行node_modules/.bin/gulp

您有两种选择:

  1. 全局安装可执行模块:

     npm install -g gulp 

    如果这是您经常使用的工具(用于许多不同的项目),则很好。 对于gulp具体而言,全球的装机量一饮而尽还会检查,看是否项目都有自己的gulp安装(以node_modules),然后运行该版本的gulp 这意味着每个项目都可以有自己的gulp版本。 但并非所有工具都具有此功能。

  2. 使用npx

     npx gulp 

    新版本的npm附带了一个命令调用npx将通过项目的node_modules目录搜索找到一个模块来执行。 这意味着您无需全局安装特定于项目的工具。 除了避免全局安装命令(可能是安全问题,也可能不是安全问题)以外,它还允许您安装项目的特定版本的工具。

    如果您的npm安装没有npx,则可以从npm本身安装它:

     npm install -g npx 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM