Gulp nodejs istanbul isparta

我试图获得与伊斯坦布尔和ispartaunit testing覆盖,我有一些麻烦。

其实,这是我的大嘴文件任务:

gulp.task('pre-test', ['default'], function() { return gulp.src('src/app/**/*.js') .pipe(plumber()) .pipe(istanbul({ instrumenter: isparta.Instrumenter, includeUntested: true })) .pipe(istanbul.hookRequire()); }); gulp.task('test', ['pre-test'], function() { return gulp.src('src/test/**/*.js') .pipe(mocha({reporter: 'spec'})) .pipe(istanbul.writeReports({})); }); 

当我开始吞咽“testing”任务时,我有以下错误:

 [08:34:17] Plumber found unhandled error: Error in plugin 'gulp-istanbul' Message: Unable to parse C:\projects\nodejs\mon-notaire\src\app\core\logger\concrete\ConsoleLogger.js Line 1: Unexpected token [08:34:17] Finished 'pre-test' after 2.11 s [08:34:17] Starting 'test'... stream.js:94 throw er; // Unhandled stream error in pipe. ^ C:\projects\nodejs\mon-notaire\src\test\core\TestConfReader.js:1 (function (exports, require, module, __filename, __dirname) { import ConfReade ^^^^^^ SyntaxError: Unexpected reserved word at exports.runInThisContext (vm.js:73:16) at Module._compile (module.js:443:25) at Object.Module._extensions..js (module.js:478:10) at Object.Module._extensions.(anonymous function) [as .js] (C:\projects\nodejs\mon-notaire\node_modules\gulp-istanbul\node_modules\istanbul\lib\hook.js:109:37) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at require (module.js:384:17) at C:\projects\nodejs\mon-notaire\node_modules\mocha\lib\mocha.js:192:27 at Array.forEach (native) npm ERR! Test failed. See above for more details. 

你有没有设置.babelrc

如果您使用的是依赖于babel v6的最新版本的.babelrc ,那么您需要像下面那样设置.babelrc 。 (你还需要做npm install --save-dev babel-preset-es2015

 { "presets": [ "es2015" ] } 

这一行:

 Message: Unable to parse C:\projects\nodejs\mon-notaire\src\app\core\logger\concrete\ConsoleLogger.js 

意思是你的代码在ConsoleLogger.js中有问题,所以你可能想检查一下这个文件。

这条线:

 C:\projects\nodejs\mon-notaire\src\test\core\TestConfReader.js:1 (function (exports, require, module, __filename, __dirname) { import ConfReade ^^^^^^ SyntaxError: Unexpected reserved word 

build议您使用ES6,但是在运行之前,您的吞咽任务不会转换成ES5,这就是您遇到错误的原因。

我做了一个yeoman生成器 ,为此创build一个项目(在ES6中编写nodeJs项目),并包含使用istanbul和源代码映射的代码覆盖。 你可能想看看这个。

否则,这是我的工作gulpfile从该生成器。

我使用伊斯坦布尔,以及称为remap-istanbul的模块。

错误消息表明您正在使用ES6,但gulp-istanbul默认不支持。

当然,你可以编写你的函数来编译ES6代码,但是考虑到你在这种情况下使用了gulp ,恕我直言,你可以做的最简单的方法就是使用gulp-babel-istanbul代替gulp-istanbul ,不需要改变上面附上的代码。

 import istanbul from 'gulp-babel-istanbul' 

其余的代码保持不变。