mocha
运行基于 async/await
的测试。在我开始工作之前,项目架构已经设置好,并且我一直在尝试将其 node 版本更新为 8.9.4。该项目是一个同构应用程序,使用 babel、gulp 和 webpack 运行。
为了运行测试,我们运行 gulp 任务。在项目中有两个 .bablerc
文件,一个位于项目的根目录下,另一个位于测试文件夹中。
两者都具有相同的配置:{
"presets": [
["env", {"exclude": ["transform-regenerator"]}],
"react",
"stage-1"
],
"plugins": [
"babel-plugin-root-import"
]
}
当我在本地运行应用程序时,不会返回任何错误。但是当我使用gulp test:api
运行测试时,我经常会遇到以下错误:ReferenceError: regeneratorRuntime未定义
这是我在测试文件夹中的gulp文件:
var gulp = require('gulp')
var gutil = require('gulp-util')
var gulpLoadPlugins = require('gulp-load-plugins')
var plugins = gulpLoadPlugins()
var babel = require('gulp-babel')
require('babel-register')({
presets:["es2015", "react", "stage-1"]
});
// This is a cheap way of getting 'test:browser' to run fully before 'test:api' kicks in.
gulp.task('test', ['test:browser'], function(){
return gulp.start('test:api')
});
gulp.task('test:api', function () {
global.env = 'test'
gulp.src(['test/unit-tests/server/**/*.spec.js'], {read: false})
.pipe(plugins.mocha({reporter: 'spec'}))
.once('error', function (error) {
console.log(error)
process.exit(1);
})
.once('end', function () {
process.exit(0);
})
});
gulp.task('default', ['test']);
任何关于为什么会发生这种情况的帮助都将不胜感激。
babel-polyfill
并将其添加到测试文件中(import "@babel/polyfill"
),这解决了问题。 - fanta