Metaplex项目yarn start启动报jsxDEV is not a function错误如何解决
错误产生原因
- 核心为环境模式与依赖API不匹配:
jsxDEV是仅在React开发环境版本中暴露的JSX转换专用API,你启动命令中添加的CI=true环境变量会强制Next.js启用生产模式编译逻辑,最终加载的生产版React包没有该API,直接调用就会抛出类型错误。 - 编译配置冲突:项目的TypeScript/Babel配置中,JSX运行时的转换规则与当前启动的环境模式不匹配,开发模式专属的转换规则被应用到了生产模式的编译流程中。
- 依赖版本适配问题:Metaplex旧版本仓库的React、React DOM、Next.js依赖版本存在兼容问题,开启JSX自动转换后新旧版本的API调用逻辑无法对齐。
修复方案
- 调整启动命令:本地开发场景不要使用
CI=true参数(该参数是为CI流水线构建设计的),修改启动命令为:lerna run start --scope @oyster/common --stream --parallel --scope web - 对齐JSX编译配置:打开项目根目录的
tsconfig.json,确认compilerOptions下的jsx配置项为Next.js要求的默认值preserve,不要手动设置为开发模式专用的react-jsxdev:{ "compilerOptions": { "jsx": "preserve" } } - 清理重装依赖解决版本冲突:如果修改启动命令后仍报错,先全量清理缓存和依赖再重新安装:
lerna clean -y rm -rf node_modules yarn.lock yarn install - 临时兼容方案:上述操作都无效的情况下,可以在
next.config.js中强制指定JSX运行时版本:module.exports = { reactRuntime: 'automatic' }
内容的提问来源于stack exchange,提问作者zendevil.eth
相关产品推荐
相关产品推荐

