其他相关问题中提供的解决方案,例如在 .babelrc 中包含适当的预设(es2015),已在我的项目中实现。
我有两个项目(我们称它们为 A 和 B),它们都使用 ES6 模块语法。在项目 A 中,我导入项目 B,该项目通过 npm 安装并位于 node_modules 文件夹中。当我运行项目 A 的测试套件时,出现错误:
语法错误:意外的令牌导入
其前面是来自项目 B 的据称错误的代码行:
(函数(导出、要求、模块、__文件名、__目录名){ 导入
从 'history/lib/createBrowserHistory' 创建浏览器历史记录;
iife 似乎与 npm 或可能与 babel 相关,因为我的源文件仅包含“import createBrowserHistory from 'history/lib/createBrowserHistory'; 项目 B 的测试套件中的单元测试运行良好,如果我将项目 B 作为依赖项从项目 A,我的测试套件(仍然使用 es6 导入作为内部项目模块)工作得很好。
完整的堆栈跟踪:
SyntaxError: Unexpected token import
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:374:25)
at Module._extensions..js (module.js:405:10)
at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:138:7)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (actionCreators.js:4:17)
at Module._compile (module.js:398:26)
at loader (/ProjectA/node_modules/babel-register/lib/node.js:130:5)
at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:140:7)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/ProjectA/src/components/core/wrapper/wrapper.js:28:23)
at Module._compile (module.js:398:26)
at loader (/ProjectA/node_modules/babel-register/lib/node.js:130:5)
at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:140:7)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/ProjectA/src/components/core/wrapper/wrapperSpec.js:15:16)
at Module._compile (module.js:398:26)
at loader (/ProjectA/node_modules/babel-register/lib/node.js:130:5)
at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:140:7)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at /ProjectA/node_modules/mocha/lib/mocha.js:219:27
at Array.forEach (native)
at Mocha.loadFiles (/ProjectA/node_modules/mocha/lib/mocha.js:216:14)
at Mocha.run (/ProjectA/node_modules/mocha/lib/mocha.js:468:10)
at Object.<anonymous> (/ProjectA/node_modules/mocha/bin/_mocha:403:18)
at Module._compile (module.js:398:26)
at Object.Module._extensions..js (module.js:405:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:430:10)
at startup (node.js:141:18)
at node.js:980:3
这是我来自 package.json 的测试命令:
"test": "mocha --compilers js:babel-core/register '+(test|src)/**/*Spec.js'"
这篇 StackOverflow 文章类似,但没有为我使用命令行提供解决方案:使用babel从node_modules导入模块但失败
对于巴别塔
解决这个问题最简单的方法是:
npm install babel-preset-es2015 --save-dev
-
Add .babelrc
到项目的根目录,内容为:
{
"presets": [ "es2015" ]
}
确保您使用“--compilers js:babel-core/register”参数运行 mocha。
适用于巴别塔6/7+
npm install @babel/preset-env --save-dev
-
Add .babelrc
到项目的根目录,内容为:
{
"presets": [ "@babel/preset-env" ]
}
确保您正在运行 mocha--compilers js:babel-register
(巴别塔 6)或--compilers js:@babel/register
(通天塔 7) 参数
对于 mocha 版本 7 或更高版本,请使用--require babel-register
or --require @babel/register
分别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)