You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在React中使用Helmet注入HTML代码触发let语法错误如何解决

问题原因

你遇到的是JSX语法解析规则导致的编译错误。在JSX语法中,<script>标签内直接编写的JavaScript代码会被Babel当作当前组件逻辑的一部分进行编译,而非你预期的要注入到HTML中的原生静态脚本内容。
你当前的Babel编译配置没有将这部分内嵌脚本的ES6语法(你使用了let关键字)转译为ES5兼容语法,所以编译时直接识别到保留字let抛出了语法错误。

解决方案

提供两种可行的修复方式:

  • 方式1:使用dangerouslySetInnerHTML注入脚本内容
    把你原来的<script>标签替换为以下写法,直接把脚本内容作为字符串注入,避免Babel解析脚本内部的代码:
<script
  type="text/javascript"
  dangerouslySetInnerHTML={{
    __html: `
      window._mfq = window._mfq || [];
      (function() {
          let mf = document.createElement("script");
          mf.type = "text/javascript"; mf.defer = true;
          mf.src = "//cdn.mouseflow.com/projects/xyz.js";
          document.getElementsByTagName("head")[0].appendChild(mf);
      })();
    `
  }}
/>
  • 方式2:单独引入外部脚本
    你可以把这段Mouseflow的初始化代码单独存为静态JS文件(比如存为public/js/mouseflow.js),然后在Helmet中直接引入外部脚本即可:
<Helmet>
  <base />
  <script type="text/javascript" src="/js/mouseflow.js" defer />
</Helmet>

两种方式都可以解决当前的编译报错,功能实现上没有差异。

内容的提问来源于stack exchange,提问作者user17267062

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:15:01