【发布时间】:2021-08-02 14:19:17
【问题描述】:
我有一个第 3 方脚本,要求我在加载之前定义一个全局 window.varforthem。为此,我查看了nextJS docs。它以一种 eslint 和其他插件无法工作的方式完成,除了它对于长配置对象的可读性较差。如果我使用像<Script src="/scripts/forthirdparty.js" /> 这样的公用文件夹,它会在页面上被拍打而不会像_next/static 中的其他资产那样进行优化。最重要的是,max-age 标头设置为 0,因此我的 CDN 不会缓存该 misc 文件。有没有更好的方法来处理这个?如果没有,我如何确保我的静态文件获得自定义的最大年龄?
我尝试在下面史蒂夫汤姆林的链接之后的<Head> 标记中使用常规的<script> 与<Script>。
我的内联脚本需要一些服务器配置才能工作,这使得它有点复杂。
// earlier in the method
const conf = `window.config = ${JSON.stringify(pageProps.config)}`;
const { config: pageConfig } = pageProps;
// later on
<Head>
<script
dangerouslySetInnerHTML={{
__html: conf,
}}
/>
<script src="/scripts/myfile.js" />
<script src={pageConfig.third_party_script_url} />
</Head>
当我在 Chrome 中检查 <head> 标记时,一切正常。但是没有任何运行,我得到了错误Did not expect server HTML to contain a <div> in <div>. 在编译第一个加载工作之后。刷新失败。不知道为什么它在服务器上的渲染与客户端不同。
【问题讨论】:
-
检查一下 - 看看它是否能解决您的问题:stackoverflow.com/questions/55165852/…
-
一分钟内完成这一切的酷测试。如果第一个评论不起作用,我可以使用第二个:)
-
@SteveTomlin 有趣的问题。我现在正在用一些细节更新问题
标签: javascript next.js