【问题标题】:"window is not defined" with nuxtjs. Trying to build pages with generate使用 nuxtjs “未定义窗口”。尝试使用 generate 构建页面
【发布时间】:2019-08-17 19:43:22
【问题描述】:

如果我在 layouts 文件夹内的 default.vue 模板中使用“window”,则会收到错误消息“window is not defined”。使用“npm run generate”构建静态页面会创建错误消息。模式设置为“通用”

...
created() {
  window.addEventlistener('scroll', e => {
    console.log('scrollleeed')
 })
}
...

我做错了什么?我认为“生成”会创建静态页面,所有内容都将在客户端执行。

解决方案 我必须使用挂载的钩子,而不是为窗口或文档相关的东西创建的

【问题讨论】:

    标签: window nuxt.js


    【解决方案1】:

    generate 将在服务器上呈现页面,但只会呈现一次,例如在构建时。但是仍然要创建静态页面,您需要在服务器上呈现它们,因此会出现错误

    为避免这种情况,您需要在已安装的窗口中使用,或使用 if (process.client) {} 包装它

    【讨论】:

    • 嗯,我对“生成”的理解是所有内容都在本地预渲染,我只需将其上传到服务器上。因此,无需在服务器上呈现任何内容。我哪里理解错了?
    • @GregorOi 它的正确理解。但是你错过了一点,也许我解释得不好。它在本地预渲染,但在本地通过相同的服务器渲染预渲染。所以它会在预渲染时失败,因为你有窗口
    • ok 找到了解决方案,我必须将与窗口或文档相关的所有内容都放在已安装未创建的挂钩中
    • @GregorOi 是的,没错。 Mounted 仅在客户端上执行。另一种选择是使用 if (process.client) {}
    • @Aldarund 我使用 if process.client 包裹了窗口使用,但它仍然无法生成“未定义窗口”的命令。有什么想法吗?
    猜你喜欢
    • 2020-10-08
    • 2019-09-14
    • 2020-08-31
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多