|
阅读:8727回复:1
nuxt页面报错window is not defined图片:1584609432(1).jpg |
|
|
沙发#
发布于:2020-03-20 10:36
原因:nuxtjs作为一个服务端渲染的库,代码应该在node环境执行,浏览器的执行环境和node的执行环境是有差异的,node上是没有window或document这样的对象,所以会报错。
解决方案: 方法1: 在plugins文件夹中定义对应插件,比如cookie.js //cookie.js import Vue from 'vue' import VueCookie from 'vue-cookie' Vue.use(VueCookie)然后在nuxt.config.js中引入该插件,ssr设置为false /*
** Plugins
*/
plugins: [
{ src: '~plugins/mint-ui', ssr: true },
{ src: '~plugins/cookie', ssr: false } //ssr设置为false的时候,只在客户端引入
],若还不能成功可能是如下原因: 在SSR中,created生命周期在服务端执行,把需要执行系统对象的代码放到mounted生命周期里,待node服务端渲染完成之后则可以正常使用,也就是在ssr所有功能实现之后在执行。 方法2: 假如没有该对象或方法,可以用一个空对象或方法填充: if (!window) { window = {}; }
if (!window.localStorage) { window.localStorage = {}; }
if (!window.localStorage.getItem) { window.localStorage.getItem = function() {} }或者干脆不执行,跳过这段代码 if (window) {
window.localStorage.getItem('uid')
}最终生成的代码会保留源代码,这些代码在浏览端是能够正常运行的,只是在node上会被忽略 参考: https://segmentfault.com/q/1010000018136511 https://www.cnblogs.com/elza-young/p/10164481.html 网上查看到的相关资料,楼主可以根据上面的方法,排查一下原因 |
|
|
