Nodejs+Vue 前后端连接 dist 包,express开篇写法和Vue 通过用HBuilder X 工具生成(Vue项目 打包)

本文介绍了如何使用npm和yarn进行前端Vue和React项目的打包,以及如何在后端使用Express框架,包括配置静态资源路径、中间件处理、跨域设置和启动服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端:

打开 

运行 npm run build 得到 dist 文件夹

后端 Express 喜欢的写法

index.js

注这个就是接包dist目录的:

app.use(express.static('dist'))

// dist 是项目的打包资源路径,一般为根目录下dist

const express = require('express') //require函数引入express包
const app = express() //调用函数
// const routes = require('./routes/index');  //引入路由模块
const fs = require('fs');
// const path = require('path');
const hostname = 'localhost';
const port = 3000;

//实现静态资源服务
// app.use(express.static('./')) //public就是静态资源的根目录,静态资源放于此文件夹
app.use(express.static('dist')) // dist 是项目的打包资源路径,一般为根目录下dist
 
 //中间件
 app.use((req,resp,next) => {
     //中文乱码处理
     resp.header('Content-Type','text/html;charset=utf-8');
     next();
 });
 app.use((req,resp,next) => {
     //跨域设置
     resp.header("Access-Control-Allow-Credentials", true);
     resp.header("Access-Control-Allow-Origin", "*");
     resp.header("Access-Control-Allow-Headers", "X-Requested-With");
     resp.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
     resp.header("X-Powered-By", ' 3.2.1');
     resp.header("Content-Type", "application/json;charset=utf-8");
     next();
 });
 const path = require('path');

 
 app.engine('html', require('express-art-template'));
 //添加解析参数模块,能够解析POST方式提交的参数
 const bodyParser = require('body-parser');
 app.use(bodyParser.urlencoded({extended:true}));
  app.use(bodyParser.json());
  
app.get('/list', function (req, res) {
   fs.readFile( __dirname + "/" + "./db/sdata.json", 'utf8', function (err, data) {
       // console.log( data );
       res.end( data );
   });
})
 // app.use(routes); //挂载路由到app服务中
 
app.listen(3000, () => { //创建监听
	console.log(`server is running at http://${hostname}:${port}/`);
    console.log('服务器启动成功...')
})

配置文件 package.json 复制下来 ,运行 npm i 或npm install

{
  "name": "vue-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.20.2",
    "express": "^4.18.2",
    "express-art-template": "^1.0.1"
  }
}

再运行Node.js Express

命令:npm start

Vue项目 打包 后也可用:

npm i serve (npm install -g serve)

serve dist (运行打包dist目录)

React 项目 打包:

yarn build (打包React项目)

serve build (运行打包build目录) 或 express 里 app.use(express.static('build'))

<think>根据用户的需求,他想了解如何将前后端分离的Vue3Node.js项目部署并打包到Linux虚拟机。结合站内引用提供的线索,我将整理一个完整的部署教程。参考引用中涉及的关键操作括:-在Linux中解压Node.js安装(tar命令)[^1][^2]-配置Node.js环境变量[^1]-使用wget下载文件[^3]-生产环境打包发布的相关注意事项[^4]-永久关闭SELinux的方法[^5]部署流程将分为以下步骤:1.**前端(Vue3)打包**-修改生产环境API地址-执行打包命令生成dist目录2.**后端(Node.js)准备**-配置生产环境端口数据库连接-安装依赖3.**Linux环境准备**-安装Node.js(参考引用1/2)-可选:关闭SELinux(引用5)4.**文件传输**-将打包好的前端dist目录后端代码传输到Linux服务器(可用FileZilla或scp命令)5.**服务启动**-配置Node.js环境变量-使用PM2管理Node进程具体操作细节如下:</think> ### Vue3 + Node.js 前后端分离项目部署到 Linux 虚拟机教程 #### **1. 环境准备(Linux 虚拟机)** - **安装 Node.js**(参考引用[1][2]): ```bash # 下载 Node.js(示例版本 v18.16.1) wget https://nodejs.org/dist/v18.16.1/node-v18.16.1-linux-x64.tar.gz # 解压安装(引用[1][2]) tar -xvf node-v18.16.1-linux-x64.tar.gz # 配置环境变量(引用[1]) echo 'export PATH=$PATH:/your-path/node-v18.16.1-linux-x64/bin' >> ~/.bashrc source ~/.bashrc ``` > 验证安装:`node -v` 输出版本号即成功[^1]。 - **关闭 SELinux(可选,引用[5])**: 编辑 `/etc/selinux/config`,修改为 `SELINUX=disabled`,重启生效。 #### **2. 前端 (Vue3) 打包** ```bash # 进入项目目录 cd vue-project # 安装依赖 npm install # 修改生产环境 API 地址(参考引用[4]) 在 .env.production 配置后端 API 地址: VITE_API_BASE_URL = 'http://your-server-ip:3000/api' # 打包生成 dist 目录(引用[4]) npm run build ``` > 打包生成 `dist` 目录,内含静态资源文件。 #### **3. 后端 (Node.js) 配置** ```bash # 进入后端项目目录 cd node-server # 安装依赖 npm install --production # 配置生产环境(参考引用[4]) 创建 .env 文件: PORT=3000 DB_HOST=your-database-ip ``` #### **4. 文件传输到 Linux 虚拟机** - **使用 FileZilla 传输**(引用[2]): 将前端 `dist` 目录后端项目文件夹上传到虚拟机(如 `/home/project`)。 #### **5. 配置后端服务** ```bash # 在 node-server 目录启动服务(测试) node app.js # 使用 PM2 进程守护(推荐) npm install pm2 -g pm2 start app.js --name "node-server" ``` #### **6. 配置 Nginx 反向代理(可选)** ```nginx server { listen 80; server_name your-domain.com; # 托管前端静态资源(引用[4]) location / { root /home/project/dist; try_files $uri $uri/ /index.html; } # 代理后端 API 请求 location /api { proxy_pass http://localhost:3000; } } ``` #### **7. 访问验证** - 前端访问:`http://虚拟机IP` - 后端 API:`http://虚拟机IP/api` --- ### **部署关键点总结** 1. **路径问题**: Vue 路由需使用 `history` 模式(引用[4]),避免路径被截断。 2. **跨域处理**: 开发阶段通过 `vite.config.js` 代理;生产环境通过 Nginx 解决。 3. **进程管理**: 使用 PM2 守护 Node 进程,避免服务中断。 4. **防火墙配置**: 开放端口(如 80/3000): ```bash sudo firewall-cmd --add-port=80/tcp --permanent sudo firewall-cmd --reload ``` > 操作示例参考: > ```bash > # 解压 Node.js(引用[1]) > $ tar -xvf node-v18.16.1-linux-x64.tar.gz > > # Vue3 打包路径配置(引用[4]) > $ npm run build > ``` --- ### 相关问题 1. Vue3 生产环境如何解决跨域问题? 2. 如何优化 Node.js 在 Linux 上的性能? 3. PM2 有哪些常用的进程管理命令? 4. 前端路由 history 模式在 Nginx 中如何配置?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值