Gulp-Sourcemaps, SyntaxError: неожиданный токен ›

Новичок Gulp/npm здесь.

Я пытаюсь использовать gulp-sourcemaps, и по какой-то причине он падает на 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...));
});

Ошибка :

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)

Кто-нибудь сталкивался с ошибкой такого типа? Я пытался погуглить, безуспешно.


person LD Robillard    schedule 24.10.2016    source источник
comment
Какая у вас версия узла?   -  person Stavros Zavrakas    schedule 24.10.2016
comment
Узел: v6.8.1 gulp v3.9.1   -  person LD Robillard    schedule 24.10.2016


Ответы (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. Модуль Strip-bom теперь использует синтаксис ES2015 (ES6), для которого требуется Node 5.0+. (См. список поддержки Node ES2015 здесь)

Чтобы протестировать свою версию Node, запустите:

node -v

Если он меньше 5.0, вам необходимо обновить его. Вы можете скачать новейшую версию Node здесь:

https://nodejs.org/en/

После установки новой версии Node мне все еще нужно было запустить npm rebuild node-sass, чтобы снова запустить Gulp.

Однако предыдущий ответ все еще будет работать, если вы не хотите обновлять версию Node, как указал Louis, вручную редактирование файлов модуля узла не является лучшей практикой.

person philpho    schedule 24.10.2016
comment
Этот комментарий поставил меня на правильный путь. Я не хотел вручную изменять сам файл, поэтому я установил более старую версию gulp-sourcemaps (версия 1.5.0), и это решило проблему. - person LD Robillard; 28.10.2016
comment
Получал ту же ошибку, и этот пост также поставил меня на правильный путь, но работал узел v0.wontTellYou ;) ~ поэтому решил сделать полное обновление до узла v7, и npm rebuild node-sass тоже решил проблему. Вероятно, где-то задокументирована какая-то зависимость, но теперь она исправлена. - person Atari; 03.11.2016
comment
Я получаю ту же ошибку в Debian, но на моей машине с Windows, похоже, все работает нормально даже при новой установке npm. Интересно, кто-нибудь знает, что может произойти? - person Thomas Cheng; 06.11.2016