Node v6.7.0下React项目ESLint报Parsing error: Unexpected token *求助
问题根源与解决方案
这个问题的核心是Node v6.7.0对ES6模块语法的原生支持非常有限,而你的Lint工具(大概率是ESLint)在旧Node环境下没有正确配置Babel解析器,导致无法识别import * as name from './path'这种语法。Node v8.0.0对ES模块的支持有了显著提升,所以不会触发这个报错。下面是具体的解决步骤:
1. 修复ESLint配置
打开你的ESLint配置文件(比如.eslintrc.js或.eslintrc.json),做以下调整:
- 指定解析器为
babel-eslint,它能兼容Babel转译的所有ES语法,包括旧Node不支持的模块语法:module.exports = { parser: 'babel-eslint', // 其他配置... } - 确保配置了正确的ECMAScript版本和模块类型:
parserOptions: { ecmaVersion: 6, // 或更高版本,比如2015 sourceType: 'module', // 声明使用ES模块 ecmaFeatures: { jsx: true // 如果是React项目,保留这个配置 } } - 可以明确指定Node环境版本,让ESLint适配旧Node的语法规则:
env: { node: '6.7.0', browser: true, es6: true }
2. 确保依赖安装完整
- 安装
babel-eslint作为开发依赖:npm install babel-eslint --save-dev - 检查你的Babel配置(比如
.babelrc或babel.config.js),确保使用了@babel/preset-env并指定了目标Node版本:
这个配置会把ES6+语法转译为Node v6.7.0能识别的代码,包括模块语法。{ "presets": [ ["@babel/preset-env", { "targets": { "node": "6.7.0" } }], "@babel/preset-react" ] }
3. 验证Webpack配置
确保Webpack使用babel-loader处理你的React/JS文件,在module.rules里添加:
module: { rules: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, use: 'babel-loader' } ] }
这样Webpack会通过Babel转译所有JS/JSX文件,避免旧Node环境下的语法错误。
4. 清理缓存与重新安装
有时候旧的缓存会导致奇怪的问题,你可以:
- 删除
node_modules文件夹和package-lock.json(或yarn.lock) - 重新执行
npm install - 清理Webpack缓存(如果使用了缓存插件,或者直接删除
dist文件夹)
完成这些步骤后,应该就能在Node v6.7.0环境下正常运行Lint和测试了。
内容的提问来源于stack exchange,提问作者jaimefps
相关产品推荐
相关产品推荐

