Skip to content

nuxt3项目打包

以前的打包和现在的打包结果不一样了,以前需要4个文件,现在只需要一个文件,打包后上传到服务器,只需要执行node ./.output/server/in

以前需要4个文件

bash
.nuxt
public
nuxt.config.js
package.json
.nuxt
public
nuxt.config.js
package.json

上传到服务器需要安装依赖npm i,比较麻烦

现在只需要一个文件

bash
.output
.output

打包命令

bash
pnpm run build
pnpm run build

默认3000端口

注意 线上(坑)

打包后,需要把.output文件夹上传到服务器,然后执行node ./.output/server/index.mjs启动服务。但是注意只能用3000端口,默认的,改不了,至少目前改不了,不知道pm2能不能改,我用nodejs版本管理器是改不了的,就算我的端口号是8080,启动后还是3000端口,使用环境变量也不行。这样一来就只能启动一个项目。坑吧!!!

改端口

解决办法 (默认端口)

.output/server/chunks/nitro/nitro.mjs文件中,第5146行左右, const port = destr(process.env.NITRO_PORT || process.env.PORT) || 3e3;,把3e3改成8080,然后上传到服务器,启动服务,就可以用8080端口了,但是需要每次打包后手动更改,比较麻烦。

使用pm2启动服务

这个网上很多教程都是关于pm2的,一搜就有,这里就不赘述了

新建ecosystem.config.cjs文件来启动项目

js
module.exports = {
  apps: [
    {
      name: 'demo', 
      exec_mode: 'cluster',
      instances: 'max', 
      port: '3000',
      script: './.output/server/index.mjs',
      args: 'start',
      error_file: './err.log', // 错误日志存放地址
      out_file: './out.log', // 输出日志存放地址
    }
  ]
}
module.exports = {
  apps: [
    {
      name: 'demo', 
      exec_mode: 'cluster',
      instances: 'max', 
      port: '3000',
      script: './.output/server/index.mjs',
      args: 'start',
      error_file: './err.log', // 错误日志存放地址
      out_file: './out.log', // 输出日志存放地址
    }
  ]
}

启动服务

bash
pm2 start ecosystem.config.cjs
pm2 start ecosystem.config.cjs

重启服务

bash
pm2 restart ecosystem.config.cjs
pm2 restart ecosystem.config.cjs

停止服务

bash
pm2 stop ecosystem.config.cjs
pm2 stop ecosystem.config.cjs

查看服务状态

bash
pm2 status
pm2 status

程序员小洛文档