最近给项目添加一个错误日志上报的功能,由于使用的是第三方的服务,导致上报的错误信息都是Script error.
。文档上写的很清楚,要处理这个问题只需要两步:添加“crossorigin="anonymous" 属性
和添加跨域 HTTP 响应头
。那么Nuxt项目该如何添加crossorigin
呢?
给单页应用添加crossorigin
单页应用意味着nuxt.config.js
中mode
的值是spa
。spa添加crossorigin
很简单,官方文档上也有说明,只要在nuxt.config.js
文件中的build属性下添加crossorigin: 'anonymous'
就可以了。你可以运行npm run build
,然后查看项目根目录下的.nuxt/dist/server/index.spa.html
文件,其中script标签是有crossorigin
属性的。
给同构应用添加crossorigin
同构应用(即使用了服务端渲染)意味着nuxt.config.js
中mode
的值是universal
。此时再用上面的方法发现上述的.nuxt/dist/server/index.spa.html
文件是加了crossorigin
属性的,但是服务端渲染的文件.nuxt/dist/server/index.ssr.html
却没有,其内容大概如下:
1 |
|
实际运行的时候script
标签是服务端渲染时动态在上述APP变量处生成的,这个时候我们就需要对渲染的HTML模板APP处进行修改,可以直接使用Nuxt
的钩子函数,在nuxt.config.js
文件,导出的json中添加如下代码:
1 | hooks: { |
Nuxt
更多hooks相关内容可以看这里。
编译时添加crossorigin
还有一种情况就是类似于动态import
,他生成script标签的时候是受babel来控制的。这时就需要修改webpack打包时候的配置了,好在Nuxt
是支持修改配置的,再修改nuxt.config.js
文件如下:
1 | build:{ |
webpack配置crossOriginLoading
可以看这里。
总结
综上,需要在nuxt.config.js
文件中添加如下代码:
1 | module.exports = { |