【问题标题】:GULP: gulp is not defined吞咽:吞咽未定义
【发布时间】:2017-01-26 19:11:48
【问题描述】:

如下面的屏幕截图所示,我无法运行 gulp 来连接 JavaScript 文件。据说gulp is not defined.

我尝试了以下命令:

npm install -g gulp
npm install gulp
npm install gulp --save-dev

我还设置了如下环境变量:

C:\Users\<user>\AppData\Roaming\npm;C:\Python27;C:\Users\<user>\AppData\Roaming\npm\node_modules;C:\Users\<user>\AppData\Roaming\npm\node_modules\gulp;

var concat = require('gulp-concat');  
var rename = require('gulp-rename');  
var uglify = require('gulp-uglify');  


//script paths
var jsFiles = 'scripts/*.js',  
    jsDest = 'dist/scripts';

gulp.task('scripts', function() {  
    return gulp.src(jsFiles)
        .pipe(concat('scripts.js'))
        .pipe(gulp.dest(jsDest));
});

【问题讨论】:

  • 尝试从 npm 安装 gulp-cli 包
  • var gulp = require('gulp');

标签: npm gulp


【解决方案1】:

你只需要安装并需要gulp本地,你可能只安装了全局

在命令行

cd <project-root> && npm install --save-dev gulp

在你的 gulpfile.js 中

var gulp = require('gulp'); 

这是与命令行依赖项(全局安装)不同的依赖项。更具体地说,它是同一个 NPM 包,但命令行程序通常会从 NPM 包中的不同入口点执行代码,然后 require('X') 将返回。

如果我们转到 Github 上 Gulp 项目中的 package.json 文件,它会讲述整个故事:

{
  "name": "gulp",
  "description": "The streaming build system",
  "version": "3.9.1",
  "homepage": "http://gulpjs.com",
  "repository": "gulpjs/gulp",
  "author": "Fractal <contact@wearefractal.com> (http://wearefractal.com/)",
  "tags": [ ],
  "files": [ 
     // ...
   ],
  "bin": {
    "gulp": "./bin/gulp.js"
  },
  "man": "gulp.1",
  "dependencies": {
    // ...
  },
  "devDependencies": {
     // ...
  },
  "scripts": {
    "prepublish": "marked-man --name gulp docs/CLI.md > gulp.1",
    "lint": "eslint . && jscs *.js bin/ lib/ test/",
    "pretest": "npm run lint",
  },
  "engines": {
    "node": ">= 0.9"
  },
  "license": "MIT"
}

所以在命令行:

$ gulp default

会执行这个:

     "bin": {
        "gulp": "./bin/gulp.js"
      },

另一方面,代码中的 require('gulp') 将返回 this 的值:

https://github.com/gulpjs/gulp/blob/master/index.js

通常我们会在 package.json 文件中看到:

"main": "index.js"

但由于这是默认设置,他们只是省略了它(这是愚蠢的 IMO,最好明确一点,但它们不是我见过的第一个采用蹩脚的速记路线的项目。

【讨论】:

    【解决方案2】:

    它发生在 Windows 上,通常通过以下方法之一修复它:

    • 如果没有,请在项目文件夹上运行 npm install gulp,即使 你已经全局安装了 gulp。
    • 通常,这在 Windows 上不是问题,但可能是 路径。该包将尝试从环境中获取 PATH, 但是您可以通过将 exec_args 添加到您的 gulp 设置来覆盖它。 例如,在 Ubuntu 上:

      “exec_args”:{ “路径”:“/bin:/usr/bin:/usr/local/bin” }

    希望一切都会好起来的。

    来源:https://github.com/NicoSantangelo/sublime-gulp/issues/12

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      相关资源
      最近更新 更多