在生产中的 Nuxt 组件中没有调用挂载的钩子(完全静态)?

Posted

技术标签:

【中文标题】在生产中的 Nuxt 组件中没有调用挂载的钩子(完全静态)?【英文标题】:Mounted hook not being called in Nuxt component in production (full static)? 【发布时间】:2021-07-21 11:47:11 【问题描述】:

我有一个包含在 Nuxt 页面中的组件。

该组件具有以下生命周期钩子:

<script>
export default 
    name: 'MyComponent',
    created()  alert('oh hai!') ,
    mounted()  alert('oh hai again!') 

</script>

这在开发中运行良好。但是,当我导出站点完全静态(nuxt 生成)时,created 和mounted 挂钩中的代码不会运行——加载页面时不会出现警报。

我觉得我一定遗漏了一些明显的东西,但我想不通。如果在完整的静态 nuxt 站点上使用创建/安装的生命周期钩子,是否会在组件上调用它们?如果不是,那么推荐的初始化用于控制组件的代码的方法是什么?

【问题讨论】:

如果您只尝试console.log 会怎样?这两个警报可能会被丢弃,因为先是服务器端渲染,然后是客户端水合。不确定alert 在这种情况下的表现如何。 PS:created 在双方都可用,而mounted 仅在客户端可用:nuxtjs.org/docs/2.x/concepts/nuxt-lifecycle 另外,您确实尝试在本地构建和运行它,还是仅在测试生成的构建时将其托管在某个地方?跨度> 嗨 Kissu——console.log 也出现了同样的问题——有趣的是,如果我将组件直接嵌入到布局中,问题就不存在了。仅当我将组件嵌入页面时才会发生这种情况。 (钩子也不会在页面根目录上触发。) 我也有类似的问题 【参考方案1】:

当更改类型导入需要组件时,我解决了类似的问题。不要与惰性导入调情;)

曾经:

components: 
    TheError,
    TheHeader,
    TheMain,
    'the-map': () => import(/* webpackPrefetch: true */ './TheMap')
,

挂载的钩子没有被调用

现在:

components: 
    TheError,
    TheHeader,
    TheMain,
    TheMap

有效!

【讨论】:

以上是关于在生产中的 Nuxt 组件中没有调用挂载的钩子(完全静态)?的主要内容,如果未能解决你的问题,请参考以下文章

Tailwind CSS Nuxt 禁用清除选项在生产中引发错误

如何修复生产中找不到的 vue 动态异步组件?

vue3生命周期钩子以及使用方式

以下在本地主机上的开发工作,但在生产中没有

getServerSideProps 在生产中不渲染动态页面,并显示 404 错误

组件样式未在生产中应用-Vue