首页 > 其他分享 >Vue项目打包后部署到express服务器

Vue项目打包后部署到express服务器

时间:2022-11-24 22:34:44浏览次数:36  
标签:Vue const app express vue path 服务器 history

背景

有的时候我们在使用vue脚手架开发完项目后想在本地的服务器上运行进行调试,因为有的时候开发时和打包后的效果有些许差异。

步骤

安装express

npm install express -save

新增app.js

在与src文件夹同级新增server文件夹,并在server文件夹下新增app.js,app.js新增如下代码:

const express = require('express')
const path = require('path')
const app = express()
app.use(express.static(path.join(__dirname, '../dist')))
app.listen(8081, () => {
  console.log('app listening on port 8081')
})

修改package.json配置文件

添加start的快捷运行命令

"scripts": {
  "serve": "vue-cli-service serve --open",
   "build": "vue-cli-service build",
   "lint": "vue-cli-service lint",
   "start": "node app.js"
 },

运行项目

执行 npm run start 运行服务器,打开浏览器输入 localhost:8081 便可以访问到项目

注意

如果使用vue-router的history模式,需要使用connect-history-api-fallback中间件
官方解释: 当你使用 history 模式时,URL 就像正常的 url,不过这种模式要玩好,还需要后台配置支持。因为我们的应用是个单页客户端应用,如果后台没有正确的配置,当用户在浏览器直接访问地址栏中的文件 就会返回 404,这就不好看了。
所以呢,你要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。

首先安装 connect-history-api-fallback

npm install --save connect-history-api-fallback

然后修改 server/app.js

const express = require('express')
const path = require('path')
const app = express()

// vue-router history模式引入connect-history-api-fallback中间件
const history = require('connect-history-api-fallback')

// 这句代码需要放在express.static上面
app.use(history())

app.use(express.static(path.join(__dirname, '../dist')))

app.listen(8081, () => {
  console.log('app listening on port 8081')
})

标签:Vue,const,app,express,vue,path,服务器,history
From: https://www.cnblogs.com/it774274680/p/16923663.html

相关文章

  • Vue脚手架,从入门到放弃
    创建Vue脚手架Vue脚手架是官方提供的标准化开发工具(最新4.x版本)网址:https://cli.vuejs.org/zh/guide/安装使用淘宝镜像源安装npminstall--location=globalcnp......
  • vue打包后405
    proxy只是解决了开发环境的跨域,线上依然会产生跨域的问题。上线时需要配置nginx!location^~/prod-api/{rewrite^/prod-api/(.*)$/$1b......
  • Vue
    前提Vue进度:https://www.bilibili.com/video/BV1Zy4y1K7SH/?p=6&spm_id_from=pageDriver&vd_source=81bee25537470aeb5c65db3a5bba55ac进度:第23节Vue2文档教程:......
  • 第一个 Vue 程序
    <body><scriptsrc="../vue.js"></script><divid="mydiv"><!--插值表达式-->{{message}}<!--在选中的元素中也会生效-->......
  • 前后端分离中,在vue中如何截取微信回调地址上的code参数?
    作者:迷彩摘要在前后端分离开发中,微信公众号、企业微信、小程序、开发中,经常会有授权登录的场景,但是授权登录场景肯定会有一个问题,就是接收微信的回调,同时前端要拿到回调地......
  • vueCli2路径别名
      使用方式路径前面加上~  import方式导入不需要加~ ......
  • vue+element-ui实现表格的拖拽排序
    importsortablefrom"sortable.js";//引入的npmmethods:{//议题排序tableSort(){consttbody=document.querySelector('.el-table_body-wrappert......
  • 总结Vue父子组件相互传值和路由传值的两种方式【后续更新】
    1、父到子思路总结:   1、定义子组件接收父组件的变量在props['child'],的单独的属性中,与data()平行;   2、在父组件中给子组件中定义的变量赋值==> :child="pare......
  • Vue切换页面保存缓存数据或文件的两种方式
    功能描述:   在一个大的父组件中,根据tab页面的v-if进行切面的切换,但是v-if的切换会造成组件的销毁,再切换回去输入的数据或者上传的文件就没有了,所以切换页面不能让tab......
  • springboot+vue+element-ui实现文件上传前后台代码+文件上传后台工具类
    //新增模板接口@PreAuthorize("@ss.hasPermi('pshdhx:template:add')")@Log(title="template",businessType=BusinessType.INSERT)@PostMapping("add")@ResponseBodypublic......