使用头盔加载内联脚本和外部脚本

时间:2020-05-11 16:40:27

标签: reactjs react-helmet

我有一个内联脚本,该脚本调用在外部脚本中声明的函数。不幸的是,内联脚本是在加载外部脚本之前执行的,并且会出现函数未定义的错误。

      <Helmet>
        <script
          src="https://code.jquery.com/jquery-3.3.1.min.js"
          integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
          crossorigin="anonymous"
        />
        <script>
          {`
            console.log('Test', typeof $);
          `}
        </script>
      </Helmet>

可以在这里看到问题:

https://codesandbox.io/s/l9qmrwxqzq

如果在关闭头盔标签后立即插入一些字符来刷新页面,则会突然起作用,但是在第一次加载时,该功能仍未定义。

尝试了多种方法,例如将它们都声明为头盔参数,或者将它们插入单独的头盔标签中,但是这些都不起作用。

1 个答案:

答案 0 :(得分:0)

我删除了一些可疑字符。 现在它似乎对我有用:

<Helmet>
    <script
      src="https://code.jquery.com/jquery-3.3.1.min.js"
      integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
      crossorigin="anonymous"
    >
    </script>
    <script>
        console.log('Test: ', typeof $);          
    </script>
</Helmet>

我猜反引号和弯曲的括号没有按照您认为的可能做。 (Usage of the backtick character (`) in JavaScript)。

或者与其他标签配合使用的“自动关闭标签”可能无法与“脚本”标签一起使用(请参见Why don't self-closing script elements work?),因此当我手动以结束脚本结束脚本时,它会有所帮助标签。

(相关?: CDN-script in Helmet does not always load properly