JavaScript import语句报错,已尝试Babel仍未解决,请求协助
解决Node.js中
import语句报Unexpected token import的问题 嘿,我之前也踩过这个坑!这个报错本质是Node.js默认不支持ES模块的import/export语法,哪怕装了Babel,要是配置或运行方式不对,照样会出问题。我给你几个实用的排查和解决方向:
1. 检查Babel配置是否完整且正确
首先得确保依赖装对、配置文件到位:
- 先安装必要的开发依赖:
(如果是直接运行文件而非测试场景,把npm install --save-dev @babel/core @babel/preset-env babel-jestbabel-jest换成@babel/node) - 在项目根目录创建
babel.config.json(或者.babelrc),配置内容如下:{ "presets": [ ["@babel/preset-env", { "targets": { "node": "current" // 针对你当前使用的Node版本做精准转译 } }] ] } - 如果你用Jest做测试,还要在
jest.config.js里添加转译规则:module.exports = { transform: { "^.+\\.js$": "babel-jest" // 让Jest自动用Babel转译所有JS文件 } }
2. 用正确的命令运行代码
别直接用node cart.test.js执行!得让Babel先完成转译:
- 测试场景:确保
package.json里的test脚本配置正确:
然后运行"scripts": { "test": "jest" }npm test,Jest会自动调用Babel处理你的测试文件。 - 直接运行单个文件场景:用
npx babel-node cart.test.js来执行,让Babel实时转译后再交给Node运行。
3. 临时应急方案:改用CommonJS语法
要是暂时不想折腾Babel配置,也可以把ES模块语法换成Node原生支持的CommonJS:
const Product = require('./cart')
这样直接用node命令就能正常运行了。
额外注意事项
- 如果你在
package.json里设置了"type": "module",Node会默认把所有.js文件当作ES模块,但这时候要确保Babel配置适配ES模块,且不能混用require和import语法。 - 检查你的
cart.js文件导出方式:如果它用的是export default Product,要确保它也被Babel转译,或者改成CommonJS的module.exports = Product。
内容的提问来源于stack exchange,提问作者Mary Maher
相关产品推荐
相关产品推荐

