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

时间:2019-07-08 03:06:11

标签: node.js npm gulp mocha

症状:

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

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

npm install gulp --save-dev

然后我尝试通过

执行它
gulp
zsh: command not found: gulp

但是如果我将npm script添加到package.json

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

然后运行

npm start

它可以顺利执行。

P.S。 与mocha软件包相同的问题,我不能直接执行mocha,但可以毫无问题地执行npm test

想要的帮助:

该如何解决该问题?

注意:

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

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

4 个答案:

答案 0 :(得分:2)

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

一样运行它们

.\node_modules\.bin\gulp

答案 1 :(得分:1)

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

npm install gulp -g

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您有两种选择:

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

    npm install -g gulp
    

    如果这是您经常使用的工具(对于许多不同的项目),则很好。具体来说,对于gulp,全局安装的gulp还将检查项目是否已安装自己的gulp(在node_modules中)并运行该版本的gulp。这意味着每个项目可以具有自己的gulp版本。但并非所有工具都具有此功能。

  2. 使用npx

    npx gulp
    

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

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

    npm install -g npx