Gulp Node.js伊斯坦布尔伊斯帕尔塔

问题描述 投票:1回答:3

我正在努力获得伊斯坦布尔和伊斯帕尔塔的单元测试报道,而且我遇到了一些麻烦。

实际上,这是我的gulp文件任务:

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({}));
});

当我开始gulp“测试”任务时,我有以下错误:

[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.

如何防止这些错误发生?

javascript node.js istanbul isparta
3个回答
1
投票

你有没有设置.babelrc

如果您使用的是最新版本的isparta,这取决于babel v6,那么您需要设置.babelrc,如下所示。 (你还需要做npm install --save-dev babel-preset-es2015

{
  "presets": [
    "es2015"
  ]
}

0
投票

这一行:

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

建议您使用的是ES6,但是在运行它之前,您的gulp任务没有将其转发到ES5,这就是您收到错误的原因。

我已经创建了一个yeoman generator,它正是为了这个目的而创建一个项目(在ES6中编写nodeJs项目),并包含使用istanbul和源代码映射的代码覆盖。你可能想看一下。

否则,这是我的发电机的working gulpfile

我使用istanbul,以及一个名为remap-istanbul的模块。


0
投票

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

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

import istanbul from 'gulp-babel-istanbul'

其余代码保持不变。

© www.soinside.com 2019 - 2024. All rights reserved.