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'
其余的代码保持不变。