3.6.8 配置 compiler 报错无法启动项目
sushi-su opened this issue · 24 comments
相关平台
微信小程序
小程序基础库: 2.32.2
使用框架: React
复现步骤
- taro init 创建 React + TS + Less + Webpack5 + 默认模板
- 将 /config/index.js 的 compiler 更改为 {
type: 'webpack5',
prebundle: { enable: false },
} - 运行 dev:weapp
期望结果
正常启动项目
实际结果
提示 Taro 配置有误,请检查!
[✗] compiler 的值 {"prebundle":{"enable":false,"exclude":[{}],"include":["react","react-dom","react/jsx-runtime","@tarojs/plugin-framework-react/dist/runtime"]},"type":"webpack5"} 不符合类型要求
环境信息
Taro CLI 3.6.8 environment info:
System:
OS: macOS 13.4
Shell: 5.9 - /bin/zsh
Binaries:
Node: 18.16.0 - ~/.nvm/versions/node/v18.16.0/bin/node
Yarn: 1.22.19 - ~/.nvm/versions/node/v18.16.0/bin/yarn
npm: 9.7.1 - ~/.nvm/versions/node/v18.16.0/bin/npm
npmPackages:
@tarojs/cli: 3.6.8 => 3.6.8
@tarojs/components: 3.6.8 => 3.6.8
@tarojs/helper: 3.6.8 => 3.6.8
@tarojs/plugin-framework-react: 3.6.8 => 3.6.8
@tarojs/plugin-platform-alipay: 3.6.8 => 3.6.8
@tarojs/plugin-platform-h5: 3.6.8 => 3.6.8
@tarojs/plugin-platform-jd: 3.6.8 => 3.6.8
@tarojs/plugin-platform-qq: 3.6.8 => 3.6.8
@tarojs/plugin-platform-swan: 3.6.8 => 3.6.8
@tarojs/plugin-platform-tt: 3.6.8 => 3.6.8
@tarojs/plugin-platform-weapp: 3.6.8 => 3.6.8
@tarojs/react: 3.6.8 => 3.6.8
@tarojs/runtime: 3.6.8 => 3.6.8
@tarojs/shared: 3.6.8 => 3.6.8
@tarojs/taro: 3.6.8 => 3.6.8
@tarojs/taro-loader: 3.6.8 => 3.6.8
@tarojs/webpack5-runner: 3.6.8 => 3.6.8
babel-preset-taro: 3.6.8 => 3.6.8
eslint-config-taro: 3.6.8 => 3.6.8
react: ^18.0.0 => 18.0.0
npmGlobalPackages:
typescript: 5.1.3
配置文件发出来看看
我也有这个配置, 看不到你这个错误, 怀疑有版本没对齐
我也有这个配置, 看不到你这个错误, 怀疑有版本没对齐
如开头所说的我用 taro init 创建默认模板后只修改了 compiler 配置,我不熟 Taro 源码,不知道在什么场景下 compiler. prebundle.exclude 内会出现 object,我猜测问题出在这,因为校验规则里面 exclude 应该是一个 string array
相同问题+1,从 3.6.7升级到 3.6.8 就报这个错误
相同问题+1
3.6.5升级到3.6.8也是这个问题
这次升级是不是哪里有问题,升级完之后的pnpm-lock.yaml里居然同时存在3.6.7和3.6.8的依赖配置。
猜测主要是由于exclude中string[]编译出来了一个空对象产生的类型错误
直接把 compiler
改为 webpack5
就没编译报错
compiler: 'webpack5'
这是要等发布版本吗?
我改成按模板中的方法, compiler: 'webpack5', 暂时编译通过,ossa库也没报错
为啥我改了 compiler: 'webpack5'
不行,我是编译的rn端
这个是3.6.8版本的bug吧,我也是遇到这种情况
https://github.com/NervJS/taro-doctor/blob/main/assets/config_schema.json 猜测是 exclude 没过校验
升级到3.6.8build报错了,感觉是类似的问题
Taro 配置有误,请检查! (/Users/evoforce/project/enterprise-mini-app/config/index.js) [✗] mini.optimizeMainPackage.exclude.0 的值 "__function__" 不满足要求的格式
optimizeMainPackage: { enable: true, exclude: [ module => { const resource = (module.resource || '').replace(/\\/g, '/') return onlySubPackageUsed.every( sourcePath => !resource?.includes(sourcePath) ) }, ], },
配置:
compiler: {
type: "webpack5",
prebundle: {
enable: false,
exclude: ["@nutui/nutui-react-taro"],
},
},
报错:
Taro 配置有误,请检查! (C:\Code\wuye\mp\config\index.js)
[✗] compiler 的值 {"prebundle":{"enable":false,"exclude":["@nutui/nutui-react-taro",{}],"include":["react","react-dom","react/jsx-runtime","@tarojs/plugin-framework-react/dist/runtime"]},"type":"webpack5"} 不符合类型要求
感觉是处理exclude默认值的问题,会自动添加空对象到exclude中
我也有这个问题,然后回退到3.6.7后正常,应该是3.6.8里的bug
taro3.6.8一样的问题+1
optimizeMainPackage: { enable: true, exclude: [ 'module => { const resource = (module.resource || '').replace(/\\/g, '/') return onlySubPackageUsed.every( sourcePath => !resource?.includes(sourcePath) ) }', ], }
这样试下呢
optimizeMainPackage: { enable: true, exclude: [ 'module => { const resource = (module.resource || '').replace(/\\/g, '/') return onlySubPackageUsed.every( sourcePath => !resource?.includes(sourcePath) ) }', ], }这样试下呢
报错是 taro-doctor的问题,最新版本已修复了
optimizeMainPackage: { enable: true, exclude: [ 'module => { const resource = (module.resource || '').replace(/\\/g, '/') return onlySubPackageUsed.every( sourcePath => !resource?.includes(sourcePath) ) }', ], }这样试下呢
报错是 taro-doctor的问题,最新版本已修复了
我刚升级的3.6.11 还是报这个错
optimizeMainPackage: {
enable: true,
exclude: [
(module) => module.resource && module.resource.indexOf("lodash") >= 0,
(module) => module.resource && module.resource.indexOf("dayjs") >= 0
],
},
optimizeMainPackage: { enable: true, exclude: [ 'module => { const resource = (module.resource || '').replace(/\\/g, '/') return onlySubPackageUsed.every( sourcePath => !resource?.includes(sourcePath) ) }', ], }这样试下呢
报错是 taro-doctor的问题,最新版本已修复了
我刚升级的3.6.11 还是报这个错
optimizeMainPackage: { enable: true, exclude: [ (module) => module.resource && module.resource.indexOf("lodash") >= 0, (module) => module.resource && module.resource.indexOf("dayjs") >= 0 ], },
抱歉,刚刚没注意细看,你这个应该也是 taro-doctor的原因
@luckyadam @ZakaryCode