React启动报错ERR_PACKAGE_PATH_NOT_EXPORTED: ./lib/tokenize未定义
报错根因
你遇到的ERR_PACKAGE_PATH_NOT_EXPORTED错误是Node.js版本与老项目依赖不兼容导致的:
- 2021年发布的这批React项目依赖的旧版
postcss-safe-parser会直接引用postcss包内部的./lib/tokenize路径 - 你当前使用的Node.js v17.7.2会严格校验npm包
package.json中exports字段声明的可暴露路径,未被声明的内部路径直接引用就会抛出这个错误,和你写的业务代码无关。
可落地方案(按操作成本从低到高排序)
方案1:降级Node到适配老项目的LTS版本
2021年的React脚手架项目默认适配Node.js 16.x LTS版本,该版本不会做严格的exports路径校验:
- 卸载当前Node v17.7.2,安装Node.js 16.x LTS版本
- 删除项目根目录下的
node_modules文件夹和package-lock.json文件 - 重新执行
npm install安装全部依赖,之后执行启动命令即可正常运行
方案2:不更换全局Node版本,强制对齐依赖版本
如果不想切换全局Node版本,可以通过npm/yarn的依赖强制覆盖能力,把嵌套依赖的postcss版本替换为兼容版本:
- 删除项目根目录下的
node_modules文件夹和锁文件(npm对应package-lock.json,yarn对应yarn.lock) - 打开项目根目录的
package.json,添加对应配置:- 如果你用npm(v8及以上版本),添加
overrides字段:
"overrides": { "postcss": "^8.4.5" }- 如果你用yarn,添加
resolutions字段:
"resolutions": { "postcss": "^8.4.5" } - 如果你用npm(v8及以上版本),添加
- 重新执行
npm install或yarn install安装依赖,安装完成后启动项目即可
注意:不要单独升级
postcss-safe-parser版本,旧版react-scripts和新版parser存在其他兼容问题,强制对齐postcss版本是改动最小、不会引发额外报错的方案。
内容的提问来源于stack exchange,提问作者Ajmal Rahman
相关产品推荐
相关产品推荐

