引入Effect Composer遇模块解析失败问题求助
引入@react-three/postprocessing的EffectComposer触发模块解析失败(Unexpected token)
问题原因
报错里的?.是ES2020的可选链操作符,你的构建工具(比如Webpack+Babel)默认不会转译node_modules里的代码,而screen-space-reflections(被@react-three/postprocessing间接依赖)的代码用了未转译的ES新语法,导致构建工具无法解析,触发了模块解析失败的错误。
解决方案
- 配置Babel转译指定依赖包
如果你用的是Create React App,需要借助craco或react-app-rewired修改默认配置,让Babel处理screen-space-reflections的代码:
以craco为例,在项目根目录创建craco.config.js,添加如下配置:
要是你用的是自定义Webpack配置,修改module.exports = { babel: { loaderOptions: { include: [ /node_modules\/screen-space-reflections/, ], }, }, };babel-loader的规则,把screen-space-reflections加入转译范围:module.exports = { module: { rules: [ { test: /\.(js|jsx)$/, use: 'babel-loader', include: [ path.resolve(__dirname, 'src'), /node_modules\/screen-space-reflections/, ], }, ], }, }; - 升级依赖版本
尝试升级@react-three/postprocessing到最新稳定版,或者查看screen-space-reflections是否有更新版本已经处理了代码转译的问题,新版本可能会输出兼容更多构建工具的代码。
对你疑问的解答
这个问题和模型/材质、背景设置完全无关,纯粹是构建工具的转译配置没有覆盖到screen-space-reflections这个依赖包的ES新语法导致的。
内容的提问来源于stack exchange,提问作者ben lee
相关产品推荐
相关产品推荐

