如何在Nuxt应用服务器启动时记录版本?构建后失效如何解决?
问题原因与解决方案
问题原因
你当前的自定义模块中,setup方法里的日志代码是在Nuxt的构建阶段执行的:
- 开发模式下,每次启动服务都会触发完整的构建流程,所以
setup会执行,日志能打印出来; - 构建完成后启动服务器时,只会运行已编译好的产物,模块的
setup已经在构建阶段执行完毕,不会再触发,因此日志无法输出。
解决方案
方案一:改用服务器启动钩子修改自定义模块
修改你的自定义模块,监听Nuxt的server:start生命周期钩子——这个钩子会在服务器实际启动时触发,不管是开发模式还是构建后启动:
import { defineNuxtModule } from '@nuxt/kit' export default defineNuxtModule({ setup(options, nuxt) { // 监听服务器启动事件 nuxt.hook('server:start', () => { console.log(`Started version ${options.version}`); }) } })
这样不管是开发环境启动,还是构建后启动服务器,都会在服务启动时打印版本日志。
方案二:创建服务器插件
直接在Nuxt的服务器插件目录下新建插件,插件会在服务器启动时自动加载执行:
- 创建文件
server/plugins/startup-log.ts(或.js) - 写入以下代码:
import pkg from '../../package.json' export default defineNitroPlugin(() => { console.log(`Started version ${pkg.version}`) })
这种方式不需要修改原有的模块配置,直接通过服务器插件实现启动日志打印。
内容的提问来源于stack exchange,提问作者Tom Klino
相关产品推荐
相关产品推荐

