2016-10-24 61 views
4

Gulp/npm noobie在這裏。Gulp-Sourcemaps,SyntaxError:意外令牌>

我試圖用一口-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) 

有沒有人遇到這種類型的錯誤? 我試圖谷歌它,沒有任何成功。

+0

什麼是您的節點版本? –

+0

節點:v6.8.1吞嚥v3.9.1 – Louis

回答

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讓它重新工作。這似乎是一個老版本的Strip-bom節點模塊的問題。

欲瞭解更多信息,檢查了這一點:https://github.com/sindresorhus/strip-bom/commit/e2a3c3b83706ee5baac284f3862d3f6b9e1564e5

修訂答:

此錯誤是由使用節點的舊版本引起的。 Strip-bom模塊現在使用ES2015 (ES6)語法,它需要Node 5.0+。 (請參閱節點的ES2015支持列表here

要測試節點的版本,運行:

node -v

如果是小於5.0,則需要對其進行更新。你可以在這裏下載節點的最新版本:

https://nodejs.org/en/

安裝節點的新版本後,我仍然需要運行npm rebuild node-sass得到咕嘟咕嘟的重新啓動和運行。

如果您不想更新您的節點版本,前面的答案仍然有效,但是,如Louis指出的,手動編輯節點模塊文件不是最佳做法。

+1

這個評論讓我走在正確的道路上。我不想親手修改文件,所以我安裝了舊版本的gulp-sourcemaps(版本1.5.0),並修復了這個問題。 – Louis

+1

正在收到相同的錯誤,這篇文章也讓我在正確的軌道上,但運行節點v0.wontTellYou;)〜所以,決定做一個完整的升級到節點v7&npm重建節點sass'排序問題也是。可能某處存在某種依賴性,但是,現在它已經修復了。 – Atari

+0

我在Debian上遇到了同樣的錯誤,但在我的Windows機器上,即使使用新鮮的npm安裝,它似乎仍然工作得很好。我想知道有沒有人知道可能會發生什麼? –