Nuxt3生产模式(ssr:false)启动报错process is not defined
问题诱因
process is not defined报错的核心原因是你引入的@nuxtjs/axios模块是面向Nuxt 2开发的版本,完全不兼容Nuxt 3的生产构建逻辑:
- 该模块内部在客户端侧代码中直接引用了Node.js环境专属的
process全局对象,开发模式下Vite会自动注入兼容垫片,因此不会触发报错;生产构建时默认不会注入这类兼容旧模块的垫片,浏览器端执行代码时就会直接抛出该错误。 - 由于报错发生在客户端代码执行阶段,服务端进程不会捕获对应异常,因此本地启动控制台、Heroku平台都不会生成相关错误日志,和你遇到的现象完全吻合。
- 你注释掉的Vite
define配置仅能解决手动编写代码里的process.env.DEBUG引用,无法覆盖@nuxtjs/axios模块内部的所有process相关调用,因此单独放开这段注释也无法解决问题。
修复方案
按优先级选择以下方案即可:
方案1(官方推荐,无兼容问题)
卸载不兼容的Nuxt2版axios模块,使用Nuxt3原生提供的请求能力:
- 执行卸载命令:
npm uninstall @nuxtjs/axios - 删除
nuxt.config.ts中modules数组内的['@nuxtjs/axios', { proxyHeaders: false }]配置项 - 将项目中所有基于
@nuxtjs/axios的请求逻辑,替换为Nuxt3内置的$fetch/useFetch/useAsyncData方法,这类方法原生适配SPA/SSR双模式,不需要额外配置兼容垫片。
方案2(临时兼容,保留axios使用习惯)
如果暂时无法重构现有axios请求逻辑,不要使用旧版@nuxtjs/axios模块,改为直接引入原生axios配合自定义插件注入,同时补全Vite构建垫片:
- 执行命令卸载旧模块、安装原生axios:
npm uninstall @nuxtjs/axios npm install axios
- 修改
nuxt.config.ts配置,补全Vite的process兼容配置,最终配置如下:
import { defineNuxtConfig } from 'nuxt' // https://v3.nuxtjs.org/api/configuration/nuxt.config export default defineNuxtConfig({ css: ['vuetify/lib/styles/main.sass', 'mdi/css/materialdesignicons.min.css', '@/assets/sass/main.sass'], build: { transpile: ['vuetify'], }, vite: { define: { 'process.env.DEBUG': false, 'process.env': JSON.stringify({}), global: 'globalThis' }, }, modules: [ '@pinia/nuxt' ], ssr: false // Disable server side rendering })
- 在项目
plugins目录下新建axios.client.ts文件,自行封装axios实例注入到Nuxt运行时即可。
修改完成后重新执行npm run build构建,再启动node .output/server/index.mjs即可正常访问页面,不会再出现500错误。

内容的提问来源于stack exchange,提问作者DonMB
相关产品推荐
相关产品推荐

