Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SyntaxError:带有mocha和babel的意外标识符_Javascript_Node.js_Mocha.js_Babeljs - Fatal编程技术网

Javascript SyntaxError:带有mocha和babel的意外标识符

Javascript SyntaxError:带有mocha和babel的意外标识符,javascript,node.js,mocha.js,babeljs,Javascript,Node.js,Mocha.js,Babeljs,我有一个mocha测试文件(test/test.js),使用ES6模块语法如下所示: import {promises as fs} from 'fs' import stepToD3 from '../src/StepToD3' import assert from "assert" 此外,我的项目根目录中有一个babel.config.js文件: module.exports = { presets: [ "@vue/app", "@babel/pr

我有一个mocha测试文件(
test/test.js
),使用ES6模块语法如下所示:

import {promises as fs} from 'fs'
import stepToD3 from '../src/StepToD3'
import assert from "assert"
此外,我的项目根目录中有一个
babel.config.js
文件:

module.exports = {
    presets: [
        "@vue/app",
        "@babel/preset-env"
    ]
}
然后我想用摩卡咖啡,通过巴别塔进行测试。我使用
mocha--require@babel/register test/test.js
。但是,在执行过程中的某个地方,此操作失败,并出现以下错误:

/home/michael/Programming/cola-step/node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js:1
(function (exports, require, module, __filename, __dirname) { import _Promise from "../../core-js/promise";
                                                                     ^^^^^^^^

SyntaxError: Unexpected identifier
    at new Script (vm.js:84:7)
    at createScript (vm.js:264:10)
    at Object.runInThisContext (vm.js:312:10)
    at Module._compile (internal/modules/cjs/loader.js:684:28)
    at Module._compile (/home/michael/Programming/cola-step/node_modules/pirates/lib/index.js:83:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:732:10)
    at Object.newLoader [as .js] (/home/michael/Programming/cola-step/node_modules/pirates/lib/index.js:88:7)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
    at Module.require (internal/modules/cjs/loader.js:657:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (/home/michael/Programming/cola-step/test/test.js:7:49)
    at Module._compile (internal/modules/cjs/loader.js:721:30)
    at Module._compile (/home/michael/Programming/cola-step/node_modules/pirates/lib/index.js:83:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:732:10)
    at Object.newLoader [as .js] (/home/michael/Programming/cola-step/node_modules/pirates/lib/index.js:88:7)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
    at Module.require (internal/modules/cjs/loader.js:657:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at /usr/lib/node_modules/mocha/lib/mocha.js:231:27
    at Array.forEach (<anonymous>)
    at Mocha.loadFiles (/usr/lib/node_modules/mocha/lib/mocha.js:228:14)
    at Mocha.run (/usr/lib/node_modules/mocha/lib/mocha.js:536:10)
    at Object.<anonymous> (/usr/lib/node_modules/mocha/bin/_mocha:573:18)
    at Module._compile (internal/modules/cjs/loader.js:721:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:774:12)
    at executeUserCode (internal/bootstrap/node.js:342:17)
    at startExecution (internal/bootstrap/node.js:276:5)
    at startup (internal/bootstrap/node.js:227:5)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
/home/michael/Programming/cola-step/node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js:1
(函数(导出、要求、模块、_文件名、_目录名){import _promisefrom./../core js/Promise”;
^^^^^^^^
SyntaxError:意外的标识符
在新脚本中(vm.js:84:7)
在createScript上(vm.js:264:10)
在Object.runInThisContext(vm.js:312:10)
at模块编译(内部/modules/cjs/loader.js:684:28)
在Module._compile(/home/michael/Programming/cola step/node_modules/pirates/lib/index.js:83:24)
at Module._extensions..js(internal/modules/cjs/loader.js:732:10)
在Object.newLoader[as.js](/home/michael/Programming/cola step/node_modules/pirates/lib/index.js:88:7)
at Module.load(内部/modules/cjs/loader.js:620:32)
在tryModuleLoad(内部/modules/cjs/loader.js:560:12)
at Function.Module._load(内部/modules/cjs/loader.js:552:3)
at Module.require(内部/modules/cjs/loader.js:657:17)
根据需要(内部/modules/cjs/helpers.js:22:18)
在对象上。(/home/michael/Programming/cola-step/test/test.js:7:49)
at模块编译(内部/modules/cjs/loader.js:721:30)
在Module._compile(/home/michael/Programming/cola step/node_modules/pirates/lib/index.js:83:24)
at Module._extensions..js(internal/modules/cjs/loader.js:732:10)
在Object.newLoader[as.js](/home/michael/Programming/cola step/node_modules/pirates/lib/index.js:88:7)
at Module.load(内部/modules/cjs/loader.js:620:32)
在tryModuleLoad(内部/modules/cjs/loader.js:560:12)
at Function.Module._load(内部/modules/cjs/loader.js:552:3)
at Module.require(内部/modules/cjs/loader.js:657:17)
根据需要(内部/modules/cjs/helpers.js:22:18)
at/usr/lib/node_modules/mocha/lib/mocha.js:231:27
在Array.forEach()处
在Mocha.loadFiles(/usr/lib/node_modules/Mocha/lib/Mocha.js:228:14)
在Mocha.run(/usr/lib/node_modules/Mocha/lib/Mocha.js:536:10)
at对象。(/usr/lib/node_modules/mocha/bin/_mocha:573:18)
at模块编译(内部/modules/cjs/loader.js:721:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:732:10)
at Module.load(内部/modules/cjs/loader.js:620:32)
在tryModuleLoad(内部/modules/cjs/loader.js:560:12)
at Function.Module._load(内部/modules/cjs/loader.js:552:3)
位于Function.Module.runMain(internal/modules/cjs/loader.js:774:12)
在executeUserCode(internal/bootstrap/node.js:342:17)
开始执行时(内部/bootstrap/node.js:276:5)
启动时(内部/bootstrap/node.js:227:5)
在bootstrapNodeJSCore(internal/bootstrap/node.js:743:3)

如果我使用Babel,为什么不能理解ES6导入语法?这里出了什么问题?

在这种情况下,我使用mocha在NodeJS上运行测试,但是我的
Babel.config.js
被设置为为为浏览器生成代码。要解决这个问题,我必须创建两个不同的Babel设置,然后导出正确的
节点
运行相应命令之前的值(例如,
NODE_ENV=test mocha--require@babel/register
用于测试,以及
NODE_ENV=production
用于我的网页包生产构建)

这是我新的
babel.config.js

module.exports = {
    'env': {
        'production': {
            'presets': [
                [
                    '@vue/app',
                    {
                        // "modules": false,
                        'targets': ['ie >= 9']
                    },
                    '@babel/env'
                ]
            ],
            'comments': false
        },
        'test': {
            'presets': [
                [
                    '@babel/env',
                    {'targets': {'node': 'current'}}
                ]
            ]
        }
    }
}

Babel不捆绑您的模块,但只传输输入代码的语言级别。如果您的运行时无法加载模块,您将需要像webpack或parcel这样的捆绑程序从模块文件生成一个脚本。对,但Mocha正在使用Node JS运行,它有自己的导入系统(不需要webpack)这是正确的,但是node使用CommonJS模块系统,而您的代码当前使用ES模块系统。