【问题标题】:Gulp-Sourcemaps, SyntaxError: Unexpected token >Gulp-Sourcemaps, SyntaxError: Unexpected token >
【发布时间】:2017-03-06 08:29:48
【问题描述】:

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...));
});

错误:

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)

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

【问题讨论】:

  • 你的节点版本是多少?
  • 节点:v6.8.1 gulp v3.9.1

标签: node.js npm gulp gulp-sourcemaps


【解决方案1】:

我刚开始遇到同样的错误,并通过将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) 语法,它需要 Node 5.0+。 (参见 Node 的 ES2015 支持列表here

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

node -v

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

https://nodejs.org/en/

安装新版本的 Node 后,我仍然需要运行 npm rebuild node-sass 才能让 Gulp 重新启动并运行。

如果您不想更新 Node 版本,前一个答案仍然有效,但是,正如 Louis 指出的那样,手动编辑节点模块文件不是最佳实践。

【讨论】:

  • 这条评论让我走上了正确的道路。我不想自己手动修改文件,所以我安装了旧版本的 gulp-sourcemaps(1.5.0 版)并解决了这个问题。
  • 收到同样的错误,这篇文章也让我走上了正确的轨道,但正在运行 node v0.wontTellYou ;) ~ 所以,决定全面升级到 node v7 和npm rebuild node-sass也解决了这个问题。可能在某处记录了某种依赖关系,但是,现在已经修复了。
  • 我在 Debian 上遇到了同样的错误,但在我的 Windows 机器上,即使使用全新的 npm 安装,它似乎也能正常工作。我想知道是否有人知道会发生什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 2019-02-10
  • 2019-11-10
  • 2014-07-08
  • 2013-11-15
  • 2020-09-26
相关资源
最近更新 更多