我想从react-snap prerender构建中排除内部通信脚本(我认为是JS和CSS,但有400KB的字符串化代码)。
所有其他脚本已经被排除在外,但内部通信不能,并正在扰乱我的预渲染和搜索引擎优化,并使预渲染脚本远远大于需要的。
我在package.json中使用以下命令设置了exclusion参数:
"reactSnap":{ "destination":“构建/预渲染”,"removeScriptTags":true },这不包括所有其他脚本。
在index.html中使用以下任一方式加载内部通信:
window.intercomSettings = { app\_id: 'APP\_ID' }; ( s=d.createElement('script');s.type='text/javascript';s.async=true;(){var w=window;var ic=w.Intercom;if(s=d.createElement(‘script’);s.type=‘text/javascript’;s.async=true;var w=window;var ic=w.Intercom;if);}else{var d=document;var w=window;var ic=w.Intercom;if(){var functions.src='https://widget.intercom.io/widget/‘+ 'APP_ID';var x=d.getElementsByTagName('script');x.parentNode.insertBefore(s,x);};if(w.attachEvent){w.attachEvent('onload',l);}s.src={w.addEventListener(’load‘,l,false);})();
或者子组件中的react-intercom组件,通过:>对讲机appID= 'APP_ID'/>
任何帮助都将不胜感激--谢谢
发布于 2019-07-30 00:24:55
我也有同样的问题。您可以通过查看用户代理来检测预渲染:
function isPreRendering() {
return navigator.userAgent === 'ReactSnap';
};然后,只需将上面的整个脚本放在一个if (!isPreRendering)块中。
https://stackoverflow.com/questions/55616945
复制相似问题