【问题标题】:Gulp can't find itself locallyGulp 在本地找不到自己
【发布时间】:2015-12-11 15:14:41
【问题描述】:

gulpfile.js:

var gulp = require('gulp');                       
var console = require('console');                 

gulp.task('default', function() {                 
  console.log('The "Gulp Default Task" is done.');
}); 

nodejs 命令:

λ gulp
[17:17:48] Local gulp not found in ~\nodework\dyncss
[17:17:48] Try running: npm install gulp

$ (master) (dyncss@0.0.0)
λ npm install gulp --save-dev
C:\Users\TheStaabFamily\AppData\Roaming\npm\gulp -> C:\Users\TheStaabFamily\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js
C:\Users\TheStaabFamily\AppData\Roaming\npm
└── gulp@3.9.0

$ (master) (dyncss@0.0.0)
λ gulp
[20:23:58] Local gulp not found in ~\nodework\dyncss
[20:23:59] Try running: npm install gulp

WTF?这是在 Win7 x64 上。我花了很长时间安装 VStudio,所以 node-gyp(gulp 的依赖项)可以在 gulp 安装期间自行构建。我最初安装 gulp:

npm install -g gulp

顺便说一句,当我尝试使用 -D 或 --save-dev 选项安装 gulp 时,npm 也没有更新我的 package.json。 我是一个新的节点用户,所以如果这个问题太菜,请原谅。 谢谢!!!

【问题讨论】:

  • 版本信息:λ node --version v4.2.2 $ (master) (dyncss@0.0.0) λ npm --version 3.5.2
  • 本地安装不应安装在AppData\Roaming 下。您是否在该目录中运行install 命令?或者,在~\nodework\dyncss 下? npm prefixnpm root 给你什么?
  • 尝试运行 npm install -g gulp 并再次尝试。
  • 我在 dyncss 中运行,这是我想使用 gulp 的新项目,因此我在我的 dyncss package.json 文件中将其标记为 devDependency。正如我所说,我的第一次 gulp 安装尝试是全局的,它失败了,上面的错误告诉我在本地找不到它。

标签: node.js npm gulp


【解决方案1】:

详情请见http://www.bartread.com/2014/02/17/whats-difference-locally-globally-installing-npm-packages/

Gulp 应该全局安装,然后链接到使用它的项目中:

npm install -g gulp

npm link --local gulp(从你的项目根目录运行)

或者...

本地安装并全局链接:

npm install gulp
npm link --global gulp

【讨论】:

    【解决方案2】:

    在安装 gulp 时不要忘记在命令中输入“-g”。它将全局安装。

    我希望由于用户权限等原因,有时在安装过程中 gulp 安装路径未添加到环境 PATH 变量中。您必须在 PATH 变量中手动添加已安装的目录路径。 这样“gulp”关键字将在全球本地可用。

    【讨论】:

    • 我在几个答案中看到了有关“您必须全局安装”或“尝试在本地安装”的内容。我看到另一个可能相关的问题 - 无法找到 AppData\Roaming\npm\package.json,每当我尝试 npm prune 操作时就会发生这种情况。我使用stackoverflow.com/questions/20711240/… 完全删除了 npm 并重新安装,重新安装了 nodejs(这次使用巧克力),并为我的第一个小模块项目安装了 gulp 和其他 devDependencies 并再次点击。
    • 一篇关于全局与本地安装问题的好文章在这里:bartread.com/2014/02/17/… 在那里它说:全局包适用于您需要从 shell 访问的任何内容。相比之下,本地包用于在您的应用程序中使用。这告诉我为什么我应该全局安装 gulp - 这告诉我为什么它不在我的路径中。
    • 在我看来,npm 应该有办法让一个包强制自己只在全局范围内安装,这样用户就不会因为那些 shell 访问类型的包而绊倒它。由于我是 nodejs/npm 的新手,如果他们同意这个想法,也许有人可以为此提出功能请求。
    • 啊,我上面第二条评论中关于全球与本地的文章给了我答案。 Gulp 是一个你想要全局安装的包,然后链接到任何使用它的项目中。这有效地在全局和本地安装包。我向 npm 提出的功能应该允许包声明其首选的安装语言环境:仅全局、仅本地、两者或不关心。然后,shell 应警告或提示尝试以不同于其首选项的方式安装软件包的用户。以帮助避免整个问题。
    • @SanfordStaab 我希望你能得到解决方案。
    猜你喜欢
    • 2014-07-26
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 2016-11-01
    • 2014-06-10
    • 2019-11-18
    相关资源
    最近更新 更多