相关疑难解决方法(0)

使用 Babel 7 运行 Mocha 6 ES6 测试,如何设置?

对于用 ES6/7 编写的库,我想将该库编译(到 ES5)到一个 dist/ 文件夹。我还想为这个库运行测试(用 ES6/7 编写)。

我的开发依赖项如下所示(package.json):

"devDependencies": {
  "@babel/cli": "^7.4.4",
  "@babel/core": "^7.4.5",
  "@babel/preset-env": "^7.4.5",
  "@babel/register": "^7.4.4",
  "chai": "^4.2.0",
  "mocha": "^6.1.4",
  "sinon": "^7.3.2"
},
Run Code Online (Sandbox Code Playgroud)

我的构建和测试脚本如下所示 (package.json):

"scripts": {
  "test": "mocha --require @babel/register",
  "build": "babel src -d dist --presets=@babel/preset-env"
},
Run Code Online (Sandbox Code Playgroud)

跑步npm run build效果很好。dist/ 文件夹中填充了转换后的文件。

跑步npm run test似乎不起作用 - 这是我的问题。

> mocha --require @babel/register

/Users/dro/Repos/lib/node_modules/yargs/yargs.js:1163
      else throw err
           ^

ReferenceError: regeneratorRuntime is not defined
Run Code Online (Sandbox Code Playgroud)

最初我遇到了一个导入错误,通过添加 .babelrc 文件解决了这个错误。

下面是我的 .babelrc 文件内容。

{
  "presets": ["@babel/preset-env"]
}
Run Code Online (Sandbox Code Playgroud)

我正在读关于regeneratorRuntime …

mocha.js npm transpiler babeljs

9
推荐指数
1
解决办法
1万
查看次数

如何在命令行中直接运行node/babel脚本?

我的package.json看起来像:

{
  "name": "99-nodetest",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "babel-node --presets env app.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "babel-cli": "^6.26.0",
    "babel-preset-env": "latest"
  }
}
Run Code Online (Sandbox Code Playgroud)

我想运行的js脚本是app.js. 我无法使用节点app.js直接运行它,因为app.js包含新的语言语法.

因此,我必须按照上面定义的启动脚本,使用npm start通过babel运行它.没问题.

我的问题是如何直接在命令行中运行cmd,可以这样做吗?类似的东西:

npm run babel-node --presets env app.js

node.js npm npm-cli

8
推荐指数
4
解决办法
1万
查看次数

可以在Mocha测试中使用ES6模块吗?

ES6,Windows 10 x64,Node.js 8.6.0,Mocha 3.5.3

可以在Mocha测试中使用ES6模块吗?我exportimport关键字有问题。

/* eventEmitter.js
 */

/* Event emitter. */
export default class EventEmitter{

    constructor(){

        const subscriptions = new Map();

        Object.defineProperty(this, 'subscriptions', {
            enumerable: false,
            configurable: false,
            get: function(){
                return subscriptions;
            }
        });
    }

    /* Add the event listener.
     * @eventName - the event name. 
     * @listener - the listener.
     */
    addListener(eventName, listener){
        if(!eventName || !listener) return false;
        else{
            if(this.subscriptions.has(eventName)){
                const arr = this.subscriptions.get(eventName);
                arr.push(listener);
            }
            else{
                const arr = [listener];
                this.subscriptions.set(eventName, arr); …
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js node.js ecmascript-6

6
推荐指数
3
解决办法
7451
查看次数