当前位置: 首页 > article >正文

Nuxt3部署

最近接了一个项目,需要用到 nuxt3 技术来满足甲方所要求的需求,在部署的时候遇到了很多问题,这里我一一给大家讲述部署流程,以及所遇到的坑

打包部署

部署分为俩种方式:

静态(spa)部署ssr部署

静态部署

静态部署指的是打包后 只包含静态的 html,css,js文件,对于seo不友好,部署之后和vue3项目部署没什么很大的差别

在终端输入命令:

npx nuxi generate

生成 dist 文件夹,可直接把dist文件夹放入到服务器上,即可访问,可参考我过往的这篇文章:

vue3部署全流程https://blog.csdn.net/lxh0113/article/details/142858608?spm=1001.2014.3001.5501

ssr部署

打包

ssr部署在部署后,页面有利于seo,所有的dom元素都能被检索到

可以执行

nuxt build

也可以修改 package.json 文件:

在终端输入

pnpm  build
#或者
npm run build

这样子就打包好了,内容会在这个 .output 目录下

安装node和npm

首先需要在服务器上安装 node 和 npm 以及 nginx

可参考该文章

Linux环境安装配置nodejs详细教程_linux安装nodejs-CSDN博客https://blog.csdn.net/qq_40743057/article/details/139139574

安装好后

可使用 xftp 上传文件到(我上传的是 /root/usr)目录

上传该目录,但是由于该文件前缀字符是 . 需要在设置里面选择显示隐藏文件夹

并在该目录下,上传一个 ecosystem.config.cjs(可在本地新建,然后写入内容,进行修改)

在官方给出的配置上,我加了俩行代码,一个是 error_files 和 out_file 这俩个在后续部署很有用,因为部署难免会出现很多错误,但是生产环境难以看到错误在哪里,浏览器下面检查也无法固定到错误问题,这个就能让我们定位到相关错误代码的位置,并去解决问题,它输出的文件在上图有所展示。

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', // 输出日志存放地址}]
}

pm2配置

上传完毕之后,我们需要安装pm2

安装pm2 是因为需要该 ssr 渲染 ,是实实在在开了一个服务器,所以需要进程管理,有了pm2后,可以对该服务器进行更好的设置,也不会因为服务器掉线而导致网站失效

安装pm2

npm install pm2 -g
#或者
pnpm install pm2 -g

然后在 /root/usr 目录下,执行

pm2 start ecosystem.config.cjs

 会出现如下图,这个name指的是 你的 ecosystem.config.cjs 中的name字段,可修改

 

常用命令
保存服务
pm2 save
开机自启(操作系统开机自启)
pm2 startup
停止进程
pm2 stop demo #你的进程名字
 删除进程
pm2 delete demo#你的进程名字

另外一种部署:

这个部署需要把 .nuxt nuxt.config.ts package,json 和 public 文件夹 都上传到 服务器。不太推荐该方式,因为该方式有一些弊端:

是因为node_modules文件+public文件内存大小远大于上面方法的.output文件,过多占用服务器内存,其次在下载安装依赖包生成node_modules文件过程中,可能因为环境问题出现下载速度过慢卡顿,兼容报错等问题

最好新建一个文件夹,然后把这几个文件夹放在一个文件夹内,然后在 该文件夹下的目录下执行

安装依赖

pnpm i
#或者
npm install

 然后也可以进行pm2配置,如上述步骤是一样的。

错误日志查看:

配置好如上信息后,如若遇到报错,需要查看报错信息,打开 /root/usr 目录下的

就可以查看错误了:

 配置nginx

这一步也十分重要,如何安装nginx在我上面提到的 vue3 部署有说哦

安装好nginx后

我们在 nginx.conf 中给到如下内容(因为我们本地的项目服务端口是3000,所以转发到3000端口即可,如果你的端口不一样,也可以修改端口)

server {listen       80;listen       [::]:80;#index index.html;#try_files $uri $uri/ /index.html;server_name  localhost;#root         /root/usr/dist;# Load configuration files for the default server block.location / {proxy_pass http://localhost:3000;}error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}

最后执行 nginx -s reload 即可 

踩坑记录:

问题一

我之前遇到了这种情况,就是在打包的时候一直报错,导致无法打包,具体原因是因为这里面的依赖出现了冲突导致打包出现了问题

翻遍了github 尝试了相关解决办法,依旧没有,后面在大佬的建议下是重开了项目,把nuxt版本升到了最高级,然后安装依赖也是按照这个来安装的,网上的安装相关插件多多少少都可能有些问题,看官方的示例会更好。

Nuxt 模块 - Nuxt 中文文档

问题二

后面打包是没问题了,但是在部署的时候还是出现了问题。部署之后,在生产环境是无法知道错误的,所以这个时候就需要错误日志了,

也是尝试了很多办法,最后这个解决方法解决了我的问题

 在nuxt.config.ts 下

build: {transpile: ["vue-router", "@vue/devtools-api"]},

然后完结撒花!!!

相关文章:

Nuxt3部署

最近接了一个项目,需要用到 nuxt3 技术来满足甲方所要求的需求,在部署的时候遇到了很多问题,这里我一一给大家讲述部署流程,以及所遇到的坑 打包部署 部署分为俩种方式: 静态(spa)部署 和 ssr部署 静态部署 静态部…...

网络攻防技术一:绪论

文章目录 一、网络空间CyberSpace1、定义2、基本四要素 二、网络空间安全1、定义2、保护对象3、安全属性4、作用空间 三、网络攻击1、攻击分类2、攻击过程 四、网络防护1、定义2、安全模型3、安全服务5类4、特定安全机制8种5、普遍性安全机制5种 五、网络安全技术发展简史1、第…...

【人工智能】deepseek七篇论文阅读笔记大纲

七篇文章看了整整五天,加上整理笔记和问ds优化,大致的框架是有了。具体的公式细节比较多,截图也比较麻烦,就不列入大纲去做笔记了。 DeepSeek-LLM:一切的起点,所以探索的东西比较多,包括&#x…...

unix/linux source 命令,在当前的 Shell 会话中读取并执行指定文件中的命令

source 命令 (或者它的POSIX等效命令 .):在当前 Shell 环境中执行脚本 简单来说,source 命令的作用是:在当前的 Shell 会话中读取并执行指定文件中的命令。 这意味着,被 source 执行的脚本中的所有命令,就好像是你直接在当前的命令行提示符下逐行输入并执行的一样。 核…...

[leetcode] 二分算法

本文介绍算法题中常见的二分算法。二分算法的模板框架并不复杂,但是初始左右边界的取值以及左右边界如何向中间移动,往往让我们头疼。本文根据博主自己的刷题经验,总结出四类题型,熟记这四套模板,可以应付大部分二分算…...

imgsz参数设置

在YOLOv8中,imgsz参数控制输入图像的尺寸,它直接影响模型的精度、速度和显存占用。对于1280720像素的原始图片,选择合适的imgsz需要平衡以下因素: 一、推荐设置 1. 兼顾精度与速度(推荐) model<...

【算法】分支限界

一、基本思想 &#xff08;分支限界&#xff0c; 分枝限界&#xff0c; 分支界限 文献不同说法但都是一样的&#xff09; 分支限界法类似于回溯法&#xff0c;也是一种在问题的解空间树上搜索问题解的算法。 但一般情况下&#xff0c;分支限界法与回溯法的求解目标不同。回溯…...

使用 C/C++ 和 OpenCV 调用摄像头

使用 C/C 和 OpenCV 调用摄像头 &#x1f4f8; OpenCV 是一个强大的计算机视觉库&#xff0c;它使得从摄像头捕获和处理视频流变得非常简单。本文将指导你如何使用 C/C 和 OpenCV 来调用摄像头、读取视频帧并进行显示。 准备工作 在开始之前&#xff0c;请确保你已经正确安装…...

历史数据分析——广州港

个股简介 公司简介: 华南地区最大的综合性主枢纽港。 本公司是由广州港集团、国投交通、广州发展作为发起人,共同出资以发起方式设立的股份有限公司。 经营分析: 一般经营项目:企业管理服务(涉及许可经营项目的除外);港务船舶调度服务;船舶通信服务;企业自有资金…...

数据库管理与高可用-MySQL全量,增量备份与恢复

目录 #1.1MySQL数据库备份概述 1.1.1数据备份的重要性 1.1.2数据库备份类型 1.1.3常见的备份方法 #2.1数据库完全备份操作 2.1.1物理冷备份与恢复 2.1.2mysqldump备份与恢复 2.1.3MySQL增量备份与恢复 #3.1制定企业备份策略的思路 #4.1扩展&#xff1a;MySQL的GTID 4.1.1My…...

从gitee仓库中恢复IDEA项目某一版本

神奇的功能&#xff01;&#xff01;&#xff01;代码改乱了&#xff0c;但是还有救&#xff01; 打开终端&#xff0c;输入git log 复制想要恢复版本的提交哈希值&#xff0c;打开终端输入git reset --hard <哈希值> &#xff0c;就能修复到那时的提交版本了...

用dayjs解析时间戳,我被提了bug

引言 前几天开发中突然接到测试提的一个 Bug&#xff0c;说我的时间组件显示异常。 我很诧异&#xff0c;这里初始化数据是后端返回的&#xff0c;我什么也没改&#xff0c;这bug提给我干啥。我去问后端&#xff1a;“这数据是不是有问题&#xff1f;”。后端答&#xff1a;“…...

[git每日一句]Changes not staged for commit

在 Git 中&#xff0c;"Changes not staged for commit" 的意思是&#xff1a; 你有已修改的文件&#xff0c;但尚未使用 git add 将它们添加到暂存区&#xff08;Staging Area&#xff09;&#xff0c;因此这些更改不会被包含在下次提交中。 具体含义 已修改但未暂…...

架构师面试题整理

以下是从提供的HTML代码中提取的所有class"title-txt"的文本内容&#xff0c;已排除重复项并按顺序整理&#xff1a; 缓存专题 实战解决大规模缓存击穿导致线上数据库压力暴增面试常问的缓存穿透是怎么回事基于DCL机制解决突发性热点缓存并发重建问题实战Redis分布…...

类和对象:实现日期类

目录 概述 一.实现日期类的基本框架 二.实现比较的运算符重载 1.>的运算符重载 2.的运算符重载 3.其余的比较运算符重载 三.加减天数的运算符重载 1.,的运算符重载 2.-&#xff0c;-的运算符重载 3.对1和2的小优化 四.两个日期类相减的重载 1.&#xff0c;--的重…...

基于springboot的运动员健康管理系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;没有什么华丽的语言&#xff0…...

华为云Flexus+DeepSeek征文 | 初探华为云ModelArts Studio:部署DeepSeek-V3/R1商用服务的详细步骤

华为云FlexusDeepSeek征文 | 初探华为云ModelArts Studio&#xff1a;部署DeepSeek-V3/R1商用服务的详细步骤 前言一、华为云ModelArts Studio平台介绍1.1 ModelArts Studio介绍1.2 ModelArts Studio主要特点1.3 ModelArts Studio使用场景1.4 ModelArts Studio产品架构 二、访问…...

下载即转化的商业密码:解析华为应用商店CPD广告的智能投放逻辑

在移动互联网流量红利见顶的背景下&#xff0c;华为应用市场凭借其终端生态优势正成为开发者获客的新蓝海。数据显示&#xff0c;2025年Q1华为应用商店全球分发量同比增长27%&#xff0c;其中CPD广告因其"下载才付费"的精准特性&#xff0c;已成为金融、游戏、工具类…...

分布式锁和数据库锁完成接口幂等性

1、分布式锁 唯一主键与乐观锁的本质是使用了数据库的锁&#xff0c;但由于数据库锁的性能不太好&#xff0c;所以我们可使用Redis、Zookeeper等中间件来实现分布式锁的功能&#xff0c;以Redis为例实现幂等&#xff1a;当用户通过浏览器发起请求&#xff0c;服务端接收到请求…...

浅谈JMeter之常见问题Address already in use: connect

浅谈JMeter之常见问题Address already in use: connect 在JMeter高并发测试中出现“address already in use”错误&#xff0c;主要源于Windows系统的TCP端口资源耗尽及连接配置问题&#xff0c;在执行JMeter中查看结果树 原因分析 GET请求默认采用短连接&#xff08;Conne…...

【机器学习基础】机器学习入门核心算法:随机森林(Random Forest)

机器学习入门核心算法&#xff1a;随机森林&#xff08;Random Forest&#xff09; 1. 算法逻辑2. 算法原理与数学推导2.1 核心组件2.2 数学推导2.3 OOB&#xff08;Out-of-Bag&#xff09;误差 3. 模型评估评估指标特征重要性可视化 4. 应用案例4.1 医疗诊断4.2 金融风控4.3 遥…...

【深度学习】12. VIT与GPT 模型与语言生成:从 GPT-1 到 GPT4

VIT与GPT 模型与语言生成&#xff1a;从 GPT-1 到 GPT4 本教程将介绍 GPT 系列模型的发展历程、结构原理、训练方式以及人类反馈强化学习&#xff08;RLHF&#xff09;对生成对齐的改进。内容涵盖 GPT-1、GPT-2、GPT-3、GPT-3.5&#xff08;InstructGPT&#xff09;、ChatGPT …...

常规算法学习

算法 1. 排序算法1. 归并排序1.1 普通归并排序1.2 优化后的归并排序&#xff08;TimSort&#xff09; 2. 插入排序2.1 直接插入排序2.2 二分插入排序2.3 成对插入排序 3. 快速排序3.1 单轴快速排序3.2 双轴快排 4. 计数排序 2. 树1. 红黑树&#xff08;Red Black Tree&#xff…...

Google 发布的全新导航库:Jetpack Navigation 3

前言 多年来&#xff0c;Jetpack Navigation 库一直是开发者的重要工具&#xff0c;但随着 Android 用户界面领域的发展&#xff0c;特别是大屏设备的出现和 Jetpack Compose 的兴起&#xff0c;Navigation 的功能也需要与时俱进。 今年的 Google I/O 上重点介绍了 Jetpack Na…...

Arbitrum Stylus 合约实战 :Rust 实现 ERC20

在《Arbitrum Stylus 深入解析与 Rust 合约部署实战》篇中&#xff0c;我们深入探讨了 Arbitrum Stylus 的核心技术架构&#xff0c;包括其 MultiVM 机制、Rust 合约开发环境搭建&#xff0c;以及通过 cargo stylus 实现简单计数器合约的部署与测试。Stylus 作为 Arbitrum Nitr…...

电脑故障基础知识

1.1 了解电脑故障 分类&#xff1a;分为软件故障&#xff08;系统感染病毒、程序错误&#xff09;和硬件故障&#xff08;硬件物理损坏、接触不良&#xff09;。 原因&#xff1a;人为操作失误、病毒破坏、工作环境恶劣&#xff08;高温 / 灰尘&#xff09;、硬件老化。 准备工…...

12.2Swing中JButton简单分析

JButton 的继承结构 public class JButton extends AbstractButton implements Accessible AbstractButton 是所有 Swing 按钮类&#xff08;如 JToggleButton, JRadioButton, JCheckBox&#xff09;的基类。它封装了按钮的核心逻辑&#xff1a;图标、文本、边框、动作事件等…...

内存管理--《Hello C++ Wrold!》(8)--(C/C++)--深入剖析new和delete的使用和底层实现

文章目录 前言C/C内存分布new和deletenew和delete的底层定位new表达式 内存泄漏作业部分 前言 在C/C编程中&#xff0c;内存管理是理解程序运行机制的核心基础&#xff0c;也是开发高效、稳定程序的关键。无论是局部变量的存储、动态内存的分配&#xff0c;还是对象生命周期的…...

JavaScript性能优化实战指南(详尽分解版)

JavaScript性能优化实战指南 一、加载优化 减少HTTP请求 // 合并CSS/JS文件 // 使用雪碧图CSS Sprites .icon {background-image: url(sprites.png);background-position: -20px 0; }代码分割与懒加载 // 动态导入模块 button.addEventListener(click, async () > {cons…...

从 AMQP 到 RabbitMQ:核心组件设计与工作原理(一)

一、引言 ** 在当今分布式系统盛行的时代&#xff0c;消息队列作为一种关键的中间件技术&#xff0c;承担着系统间异步通信、解耦和削峰填谷的重要职责。AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;作为一种高级消息队列协议&#xff0c;为消息队列的实现…...