我在 sails 和 mocha 上运行 sailsjs、mocha 和 babel。当我运行之前的函数以在运行测试之前启动 sails 应用程序时,我得到以下结果:
> PORT=9999 NODE_ENV=test mocha --recursive --compilers js:babel/register
lifting sails
1) "before all" hook
0 passing (757ms)
1 failing
1) "before all" hook:
Uncaught Error: only one instance of babel/polyfill is allowed
对于我来说,我无法弄清楚如何让 mocha 运行 babel 和 sails 运行 babel 同时工作。
我的 before() 代码如下所示:
import Sails from 'sails'
// Global before hook
before(function (done) {
console.log('lifting sails')
// Lift Sails with test database
Sails.lift({
log: {
level: 'error'
},
models: {
connection: 'testMongoServer',
migrate: 'drop'
},
hooks: {
// sails-hook-babel: false
babel: false
}
}, function(err) {
if (err) {
return done(err);
}
// Anything else you need to set up
// ...
console.log('successfully lifted sails')
done();
});
});
最佳答案
我使用 sails-hook-babel,它的效果就像一个魅力。在这里做到这一点:
- 安装
npm install sails-hook-babel --save-dev
在加载 babel 的函数之前编辑
bootstrap.js
/,即var Sails = require('sails'), sails; var options = { loose : "all", stage : 2, ignore : null, only : null, extensions: null }; global.babel = require("sails-hook-babel/node_modules/babel/register")(options); before(function (done) { Sails.lift({ //put your test only config here }, function (err, server) { sails = server; if (err) return done(err); // here you can load fixtures, etc. done(err, sails); }); }); after(function (done) { // here you can clear fixtures, etc. sails.lower(done); });
现在您可以在测试中使用 ES6。
引用资料如下:
关于node.js - Babel 无法使用 Mocha 并启动 Node 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31365483/