node.js - Babel 无法使用 Mocha 并启动 Node 服务器

标签 node.js unit-testing sails.js mocha.js

我在 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,它的效果就像一个魅力。在这里做到这一点:

  1. 安装npm install sails-hook-babel --save-dev
  2. 在加载 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);
    });
    
  3. 现在您可以在测试中使用 ES6。

引用资料如下:

  1. Babel 问题位于 GitHub
  2. My Blog ,抱歉,它是用印度尼西亚语写的,如果需要,请使用谷歌翻译。

关于node.js - Babel 无法使用 Mocha 并启动 Node 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31365483/

相关文章:

node.js - 尽管存在 key ,Redis spop 仍返回 null - NodeJS

mysql - 如何返回查询函数内的值?

node.js - 请求不以 node.js 结尾(用于工作)

java - 集成测试包含哪些内容以及如何设置它们

java - 形成 Mockito "grammars"

unit-testing - 模拟 context.Context 来测试 lambdacontext.FromContext

node.js - Waterline 将现有数据库迁移到无 sails 的水线模型

javascript - puppeteer 总是在一个网站上超时

node.js - 如何从 grunt 任务访问 Waterline 模型?

javascript - 如何使用 Sails.js 和 Waterline 更新 MongoDB 子文档中的特定键?