NervJS / taro

开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/
https://docs.taro.zone/
Other
35.68k stars 4.79k forks source link

Taro 4.0.7 生产模式无法渲染 dangerouslySetInnerHTML 中的内容 #16892

Open alexlees opened 1 week ago

alexlees commented 1 week ago

相关平台

字节跳动小程序

复现仓库

https://github.com/alexlees/demo-bug-taro4.git 小程序基础库: 3.44.0.2 使用框架: React

复现步骤

<View dangerouslySetInnerHTML={{__html: '123'}} />
npm run build:tt

期望结果

image

正常渲染 dangerouslySetInnerHTML 中的内容 img_v3_02gq_bdf3f6c3-eebd-4fdf-95e0-337926fc917g

实际结果

未渲染 dangerouslySetInnerHTML 内容 img_v3_02gq_1687ff94-35a9-43a1-bd60-8ca251cbc33g

环境信息

👽 Taro v4.0.7

  Taro CLI 4.0.7 environment info:
    System:
      OS: macOS 12.3
      Shell: 5.8 - /bin/zsh
    Binaries:
      Node: 18.20.5 - ~/.nvm/versions/node/v18.20.5/bin/node
      Yarn: 1.22.18 - ~/.yarn/bin/yarn
      npm: 10.8.2 - ~/.nvm/versions/node/v18.20.5/bin/npm
    npmPackages:
      @tarojs/cli: 4.0.7 => 4.0.7 
      @tarojs/components: 4.0.7 => 4.0.7 
      @tarojs/helper: 4.0.7 => 4.0.7 
      @tarojs/plugin-framework-react: 4.0.7 => 4.0.7 
      @tarojs/plugin-platform-alipay: 4.0.7 => 4.0.7 
      @tarojs/plugin-platform-h5: 4.0.7 => 4.0.7 
      @tarojs/plugin-platform-harmony-hybrid: 4.0.7 => 4.0.7 
      @tarojs/plugin-platform-jd: 4.0.7 => 4.0.7 
      @tarojs/plugin-platform-qq: 4.0.7 => 4.0.7 
      @tarojs/plugin-platform-swan: 4.0.7 => 4.0.7 
      @tarojs/plugin-platform-tt: 4.0.7 => 4.0.7 
      @tarojs/plugin-platform-weapp: 4.0.7 => 4.0.7 
      @tarojs/react: 4.0.7 => 4.0.7 
      @tarojs/runtime: 4.0.7 => 4.0.7 
      @tarojs/shared: 4.0.7 => 4.0.7 
      @tarojs/taro: 4.0.7 => 4.0.7 
      @tarojs/taro-loader: 4.0.7 => 4.0.7 
      @tarojs/webpack5-runner: 4.0.7 => 4.0.7 
      babel-preset-taro: 4.0.7 => 4.0.7 
      eslint-config-taro: 4.0.7 => 4.0.7 
      react: ^18.0.0 => 18.3.1 

补充信息

与 Prebundle 有关,生产环境开启 Prebundle 后能正常。

TheKonka commented 1 week ago

可以在编译配置里面 临时加下这个 alias @tarojs/runtime': require.resolve('@tarojs/runtime')

alexlees commented 1 week ago

可以在编译配置里面 临时加下这个 alias @tarojs/runtime': require.resolve('@tarojs/runtime')

没毛病,是已知问题吗?准备啥时候发新版本修复

alexlees commented 1 week ago

可以在编译配置里面 临时加下这个 alias @tarojs/runtime': require.resolve('@tarojs/runtime')

@TheKonka 发现加完这个之后,所有的npm包都会依赖上 @tarojs/runtime 有其他修复方式吗。

img_v3_02gq_d84e4d7c-3113-4858-9dab-526e0b449e3g

alexlees commented 1 week ago

image 查找了相关上下文,使用 webpackChain 去注入 alias 可以临时解决这个问题