Gulp-Sourcemaps, SyntaxError: Unexpected token >
Gulp-Sourcemaps, SyntaxError: Unexpected token >
Gulp / npm noobie 在这里。
我正在尝试使用 gulp-sourcemaps,但出于某种原因,它在 var sourcemaps = require('sourcemaps')
上崩溃了。(仅当此行在文件中时才会崩溃)
gulp文件:
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...));
});
错误:
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)
有人遇到过这种错误吗?
我尝试 google 它,但没有成功。
我刚开始遇到同样的错误,并通过将 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;
};
然后,我不得不 运行 npm rebuild node-sass
让它再次工作。这似乎是旧版本 Strip-bom 节点模块的问题。
有关更多信息,请查看:https://github.com/sindresorhus/strip-bom/commit/e2a3c3b83706ee5baac284f3862d3f6b9e1564e5
更新的答案:
此错误是由于使用旧版本的 Node.js 引起的。 Strip-bom 模块现在使用 ES2015 (ES6) syntax which requires Node 5.0+. (See Node's ES2015 support list here)
要测试您的 Node 版本,运行:
node -v
如果低于 5.0,您需要更新它。您可以在此处下载最新版本的 Node:
安装新版本的 Node 后,我仍然需要 运行 npm rebuild node-sass
来 Gulp 并再次 运行ning。
如果您不想更新 Node 版本,前一个答案仍然有效,但是,正如 Louis 指出的那样,手动编辑节点模块文件不是最佳做法。
Gulp / npm noobie 在这里。
我正在尝试使用 gulp-sourcemaps,但出于某种原因,它在 var sourcemaps = require('sourcemaps')
上崩溃了。(仅当此行在文件中时才会崩溃)
gulp文件:
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...));
});
错误:
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)
有人遇到过这种错误吗? 我尝试 google 它,但没有成功。
我刚开始遇到同样的错误,并通过将 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;
};
然后,我不得不 运行 npm rebuild node-sass
让它再次工作。这似乎是旧版本 Strip-bom 节点模块的问题。
有关更多信息,请查看:https://github.com/sindresorhus/strip-bom/commit/e2a3c3b83706ee5baac284f3862d3f6b9e1564e5
更新的答案:
此错误是由于使用旧版本的 Node.js 引起的。 Strip-bom 模块现在使用 ES2015 (ES6) syntax which requires Node 5.0+. (See Node's ES2015 support list here)
要测试您的 Node 版本,运行:
node -v
如果低于 5.0,您需要更新它。您可以在此处下载最新版本的 Node:
安装新版本的 Node 后,我仍然需要 运行 npm rebuild node-sass
来 Gulp 并再次 运行ning。
如果您不想更新 Node 版本,前一个答案仍然有效,但是,正如 Louis 指出的那样,手动编辑节点模块文件不是最佳做法。