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

时间:2016-10-24 14:04:05

标签: node.js npm gulp gulp-sourcemaps

Gulp / npm noobie在这里。

我正在尝试使用gulp-sourcemaps,由于某种原因,它在TypeError: invalid type promotion 上崩溃。(只有当文件中的这一行崩溃时才会崩溃)

gulpfile:

var sourcemaps = require('sourcemaps')

错误:

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

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

1 个答案:

答案 0 :(得分: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; }; 中的代码来修复它:

npm rebuild node-sass

然后,我必须运行node -v才能让它再次运行。对于较旧版本的 Strip-bom 节点模块,这似乎是一个问题。

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

更新的答案:

此错误是由使用旧版本的Node引起的。 Strip-bom模块现在使用ES2015 (ES6)语法,需要Node 5.0+。 (参见Node的ES2015支持列表here

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

npm rebuild node-sass

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

https://nodejs.org/en/

安装新版本的Node之后,我仍然需要运行import urllib import urllib2 url = 'https://www.businessregistration-inscriptionentreprise.gc.ca/ebci/brom/registry/registryPromptSubmit.do' values = {'businessNumber' : 'Michael Foord', 'businessName' : 'Northampton', 'requestDate' : '2016-10-23' } data = urllib.urlencode(values) req = urllib2.Request(url, data) response = urllib2.urlopen(req) the_page = response.read() print the_page 才能让Gu​​lp重新启动并运行。

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