Gulp-Sourcemaps,SyntaxError:意外的令牌>

Lou*_*uis 4 node.js npm gulp gulp-sourcemaps

Gulp/npm noobie在这里.

我正在尝试使用gulp-sourcemaps,并且出于某种原因,它会崩溃var sourcemaps = require('sourcemaps').(只有当文件中的这一行崩溃时才会崩溃)

gulpfile:

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


gulp.task('generateApp', function () {
    return gulp.src([some paths...])
        .pipe(sourcemaps.init())
        .pipe(concat('app.min.js'))
        .pipe(uglify())
        .pipe(sourcemaps.write())
        .pipe(gulp.dest(path...));
});
Run Code Online (Sandbox Code Playgroud)

错误:

C:\Projets\node_modules\strip-bom\index.js:2
module.exports = x => {
                    ^
SyntaxError: Unexpected token >
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (C:\Projets\node_modules\gulp-sourcemaps\src\init.js:10:14)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这种类型的错误?我试图谷歌它,没有任何成功.

phi*_*pho 12

我刚刚开始得到相同的错误并通过用以下代码替换代码来修复它C:\Projects\node_modules\strip-bom\index.js :

'use strict';
module.exports = function (x) {
    if (typeof x !== 'string') {
        throw new TypeError('Expected a string, got ' + typeof x);
    }

    // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string
    // conversion translates it to FEFF (UTF-16 BOM)
    if (x.charCodeAt(0) === 0xFEFF) {
        return x.slice(1);
    }

    return x;
};
Run Code Online (Sandbox Code Playgroud)

然后,我不得不跑去npm rebuild node-sass让它重新开始工作.对于旧版本的Strip-bom节点模块来说,这似乎是一个问题.

有关详细信息,请查看:https://github.com/sindresorhus/strip-bom/commit/e2a3c3b83706ee5baac284f3862d3f6b9e1564e5

更新的答案:

此错误是由使用旧版本的Node引起的.Strip-bom模块现在使用ES2015(ES6)语法,需要Node 5.0+.(请参阅节点的ES2015支持列表在这里)

要测试您的Node版本,请运行:

node -v

如果小于5.0,则需要更新它.您可以在此处下载最新版本的Node:

https://nodejs.org/en/

在安装新版本的Node之后,我仍然需要运行npm rebuild node-sass才能让Gu​​lp重新启动并运行.

如果您不想更新Node版本,前一个答案仍然有效,但是,正如路易斯指出的那样,手动编辑节点模块文件并不是最佳做法.