由任务执行者添加断断续续的休息时间

时间:2018-06-24 22:45:57

标签: node.js sass gulp gulp-sass

我在VS2017中进行了基本的安装以减少我的Javascript。我决定添加gulp-sass(我的package.json说我在gulp-sass v4.0.1上),但它抛出此错误:

C:\Work\MyProject\MyProject\node_modules\gulp-sass\index.js:66
    let sassMap;
    ^^^
SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:373:25)
    at Object.Module._extensions..js (module.js:404:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (C:\Work\MyProject\MyProject\gulpfile.js:11:12)
    at Module._compile (module.js:397:26)
    at Object.Module._extensions..js (module.js:404:10)

我的gulpfile看起来像这样:

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

gulp.task('minify', function () {
    gulp.src('src/**/*.js')
        .pipe(uglify({ mangle: false }))
        .pipe(concat('scripts.min.js'))
        .pipe(gulp.dest('Content'));


});

gulp.task('sass', function () {
    gulp.src('src/css/**/*.scss')
        .pipe(sass({ outputStyle: 'compressed' }))
        .pipe(gulp.dest('Content'));
});

gulp.task('watch', function () {
    gulp.watch('src/**/*.js', ['minify']);
});

我做了一些谷歌搜索,建议的一个简单修复是在有问题的文件的顶部添加“ use strict”,在本例中为index.js:66。但是,这样做之后,我得到:

Failed to run "C:\Work\MyProject\MyProject\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
C:\Work\MyProject\MyProject\node_modules\node-sass\lib\binding.js:15
      throw new Error(errors.missingBinary());
      ^
Error: Missing binding C:\Work\MyProject\MyProject\node_modules\node-sass\vendor\win32-x64-47\binding.node
Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 5.x
Found bindings for the following environments:
  - Windows 64-bit with Node.js 6.x
This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass --force` to build the binding for your current environment.
    at module.exports (C:\Work\MyProject\MyProject\node_modules\node-sass\lib\binding.js:15:13)
    at Object.<anonymous> (C:\Work\MyProject\MyProject\node_modules\node-sass\lib\index.js:14:35)
    at Module._compile (module.js:397:26)
    at Object.Module._extensions..js (module.js:404:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (C:\Work\MyProject\MyProject\node_modules\gulp-sass\index.js:163:21)
    at Module._compile (module.js:397:26)

我正在运行Node.js v6。我不知道为什么应该通过一个简单的过程给我这些错误。我在做什么错了?

更新

我运行了注释中建议的以下命令:

npm install node-sass -f
npm rebuild nose-sass

两者都成功运行。但是,我仍然收到此错误:

Failed to run "C:\Work\MyProject\MyProject\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
C:\Work\MyProject\MyProject\node_modules\gulp-sass\index.js:66
    let sassMap;
    ^^^
SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:373:25)
    at Object.Module._extensions..js (module.js:404:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (C:\Work\MyProject\MyProject\gulpfile.js:8:12)
    at Module._compile (module.js:397:26)
    at Object.Module._extensions..js (module.js:404:10)

更新2:

建议我添加“严格使用”;到我的gulpfile.js的顶部,但是发生相同的错误。这是文件内容:

"use strict";
var gulp = require('gulp');
var sass = require('gulp-sass'); // If I comment this out, I can build

gulp.task('sass', function () {
    gulp.src('src/css/**/*.scss')
        .pipe(sass({ outputStyle: 'compressed' }))
        .pipe(gulp.dest('Content'));
});

enter image description here

在线上最常见的问题似乎是<6.0的Node.js版本,但是我正在运行v6.11.1。

更新3 :(已解决)

最后找到了原因和解决方案;我已将其添加为下面的答案,以供将来的读者阅读。享受。

2 个答案:

答案 0 :(得分:4)

设法找到了问题,所以我在为将来的读者回答自己的问题。

虽然我安装了node.js v6.11.1,但Visual Studio 2017捆绑了它自己使用的默认版本的节点。即使您在VS2017 shell中运行node -v并告诉您它正在运行v6.11.1,它实际上(默认情况下)仍在运行.\node_mobules\.bin中的内容。

解决方案是这样的:

  1. 在VS2017中,转到“工具>选项>项目和解决方案> Web软件包管理>外部Web工具”。

  2. 您可能会看到以下内容:

enter image description here

  1. 将路径添加到独立安装的节点(默认为C:\Program Files\nodejs)中,并使用箭头将其放置在.\node_modules\bin版本上方,如下所示:

enter image description here

  1. 单击确定,然后刷新Task Runner Explorer或重新启动VS2017。您的gulpfile现在应该建立了。

enter image description here

答案 1 :(得分:1)

就我而言,我必须将$(PATH)移至$(VSINSTALLDIR)/ Web / External上方才能解决此问题。