最佳答案
在其他相关问题中提供的解决方案,如包括适当的预设(es2015)在。Babelrc,已经在我的项目中实现。
我有两个项目(我们称之为 A 和 B) ,它们都使用 ES6模块语法。在 ProjectA 中,我导入 ProjectB,它是通过 npm 安装的,位于 node _ module 文件夹中。当我为项目 A 运行我的测试套件时,我得到了一个错误:
SyntaxError: 意外的令牌导入
在此之前是项目 B 中所谓的错误代码行:
(函数(导出,要求,模块,_ _ 文件名,_ _ dirname){ import 来自‘ history/lib/createBrowserHistory’的 createBrowserHistory;
Iife 似乎是 npm 或者可能是 babel 相关的东西,因为我的源文件只包含“ import createBrowserHistory from‘ history/lib/createBrowserHistory’; Project B 测试套件中的单元测试运行良好,如果我从 Project A 中删除 Project B 作为依赖项,那么我的测试套件(仍然使用 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 命令:
"test": "mocha --compilers js:babel-core/register '+(test|src)/**/*Spec.js'"
这篇 StackOverflow 的文章很类似,但是没有为我提供使用命令行的解决方案: 使用 babel 从 node _ module 导入模块,但失败