Meteor 1.6/1.7版本导入问题:能否继续使用import语法?
嘿,别慌!Meteor 1.6+完全支持import语法,你遇到的报错只是编译配置没到位导致的,咱们一步步来搞定它:
明确结论:肯定能继续用Import语法
Meteor从1.5版本就原生支持ES模块,1.6+更是强化了这部分能力,所以import/export完全没问题,报错只是编译管道没正确处理语法而已。
最优编译器:官方ecmascript包
别折腾webpack或者自定义babel配置了,Meteor官方维护的ecmascript包是最优选择——它和Meteor的构建系统深度集成,默认就包含了适配Meteor的Babel预设,不用你手动写复杂配置,开箱即用。
具体解决步骤
1. 确保ecmascript包已安装并更新
先检查项目里有没有这个包,没有的话直接添加:
meteor add ecmascript
如果已经安装,建议更新到适配当前Meteor版本的最新版:
meteor update ecmascript
2. 移除冲突的自定义编译配置
如果你之前手动加过.babelrc或者webpack配置文件,大概率会和Meteor内置的编译流程冲突——Meteor的ecmascript包已经自带了合适的Babel配置,自定义配置会干扰它的正常工作。暂时把这些文件移到项目外,再重启项目试试。
3. 服务端代码必须走Meteor编译管道
你服务端的代码不能直接用node命令运行,必须通过meteor run启动项目——只有这样,Meteor才会用ecmascript编译你的服务端ES模块代码,否则Node.js会直接报错不认识import语法。
4. 配置转译第三方依赖
报错里提到的mantra-core-extra如果是未转译的ES模块包,Meteor默认不会处理node_modules里的代码,这时候需要在package.json里指定让Meteor转译它:
{ "meteor": { "nodeModules": { "recompile": { "mantra-core-extra": true } } } }
添加完这个配置后重启项目,Meteor就会用ecmascript处理这个依赖的语法了。
5. 尽量统一模块语法
如果项目里同时混用require和import,偶尔也会触发编译问题,建议优先统一使用import/export语法。
总结
不用换其他编译器,官方的ecmascript包就是最适配Meteor的选择,按照上面的步骤调整配置,应该就能解决Unexpected token import的报错了。
内容的提问来源于stack exchange,提问作者Leslie Leng

