Heroku 实践:如何成功将 Vue.js 的前端内容部署到 Heroku

news2024/10/5 16:41:23

文章目录

  • Vue.js 脚手架
    • 安装Vue CLI(如果你还没有安装):
    • 创建新项目
  • Heroku 部署 Vue2
    • 项目目录
    • server.js
    • package.json
    • 创建 Procfile
    • 按照 heroku 的引导初始化 git 并提交代码
  • 可能问题

Vue.js 脚手架

  • 首先要使用 Vue 的脚手架来创建一个 vue 项目,我实践中使用的是 Vue2,因此按照以下步骤来创建
  • Vue CLI可以创建Vue 2或Vue 3的新项目。你可以在创建新项目时选择你想要的Vue版本。
  • 以下是使用Vue CLI创建一个Vue 2项目的步骤:

安装Vue CLI(如果你还没有安装):

	npm install -g @vue/cli
  • 这将全局安装最新版本的Vue CLI。

创建新项目

vue create my-project
  • my-project替换为你想要的项目名称。

  • 选择 Vue 2 预设: 在运行 vue create 命令后,Vue CLI 会让你选择一个预设。你可以选择"Default (Vue 2)"预设来创建一个Vue 2项目。如果你需要更复杂的配置,例如包含Vuex或Vue Router,你可以选择"Manually select features"然后手动选择Vue 2以及你需要的其他选项。

  • 然后就是对你的项目进行开发

Heroku 部署 Vue2

  • 本文章适用的情况为:你用 Vue 搭建前端,用另外一种框架(Django)搭建了后端,并且你想将前端和后端分别部署到两个不同的 Heroku 项目中(因为基于 Django 的项目 Heroku 部署非常麻烦,所以我才会分开部署),这时你就需要单独部署 Vue
  • Vue2 创建的只是一个前端内容,为了成功部署,我们需要在这个 Vue 项目中添加一个 server.js 文件,你可以认为是部署到 Heroku 上的实体,这个 server.js 在运行的时候会允许访问这个应用的人拿到前端的静态页面。
  • 以下是一个 server.js 的实例

项目目录

.
├── Procfile
├── README.md
├── babel.config.js
├── index.js
├── jsconfig.json
├── package-lock.json
├── package.json
├── public
│   ├── favicon.ico
│   └── index.html
├── server.js
├── src
│   ├── App.vue
│   ├── assets
│   ├── components
│   ├── http.js
│   ├── main.js
│   ├── router
│   ├── test.html
│   ├── test.js
│   └── views
└── vue.config.js

  • 除了 server.js 其他的是我原本的文件目录
  • 直接在根目录下面新建一个 server.js 文件

server.js

  • 完成这一步实际上是创建一个静态的服务器,你可以使用Node.jsexpress 库为你的Vue应用创建一个简单的服务器
  • 安装express:
    npm install express --save
    
const express = require('express');
const serveStatic = require('serve-static');
const path = require('path');

const app = express();

app.use('/', serveStatic(path.join(__dirname, '/dist')));

const port = process.env.PORT || 8080;
app.listen(port);

console.log('Listening on port: ' + port);
  • 因为通过 Vue 脚手架创建的项目,其静态资源都是放在 /dist 目录下面,虽然从我的文件目录中可以看到 public 但千万别以为这就是静态资源存放的地方,也千万不要把 app.use('/', serveStatic(path.join(__dirname, '/dist'))); 写成 app.use('/', serveStatic(path.join(__dirname, 'public')));

package.json

  • 这个文件中通常定义了一些 script(脚本),也就是以一些简短的命令启动你的服务器或者其他行为
"scripts": {
    "start": "node server.js",
    "build": "vue-cli-service build"
}

在这里插入图片描述

创建 Procfile

  • Procfile 是一个无扩展名的文本文件,在其中定义你的应用的进程类型和要运行的命令。这样Heroku就知道如何运行你的应用了。在项目根目录下创建Procfile并添加以下内容:
web: npm run start

按照 heroku 的引导初始化 git 并提交代码

  • 创建一个新的 heroku 应用
    在这里插入图片描述
  • 按照 Deploy 中的引导提交代码
    在这里插入图片描述
    在这里插入图片描述

可能问题

  • 如果在Heroku部署成功没有显示任何页面,并且没有任何错误信息,可能是由于几个原因导致的。下面是一些可能的问题和相应的解决方案:

  • 检查构建脚本: 确保你在 package.json 文件中定义了正确的构建命令,通常是 build: "vue-cli-service build"。当你推送到 Heroku时,Heroku会自动运行这个构建命令来创建你的Vue.js应用。

  • 确认server.js设置: 检查你的server.js文件是否正确设置了静态文件路径。如果你使用Vue CLI创建了项目,那么生成的静态文件将位于dist目录下。你需要确保express.static中间件指向此目录。例如:

  • 确保Procfile设置正确: Procfile文件告诉 Heroku 如何启动你的应用。确认 Procfile 内容正确,并且web进程类型指向了正确的启动命令。例如,如果你使用 server.js 文件来启动服务器,那么Procfile应包含以下内容:

    web: node server.js
    
  • 查看Heroku日志: 即使Heroku没有直接在应用页面上显示错误,也可能在它的日志中有更多的信息。运行heroku logs --tail命令可以查看最近的日志信息以及新产生的日志。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/721054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nodeJs学习笔记

创建服务器 在根目录下创建server.js的文件,里面写如入以下代码: // 请求nodejs自带的http模块 var http require(http);http.createServer(function (request, response) {// 发送 HTTP 头部 // HTTP 状态值: 200 : OK// 内容类型: text/plainrespon…

Update the WSL kernel by running “wsl --update“ or……【老电脑装Docker】

给老电脑装Docker遇到了这个问题记录一下 Update the WSL kernel by running “wsl --update” or follow instructions at https://docs.microsoft.com/windows/wsl/wsl2-kernel. 打开Docker一直报这个界面,然后就退出 根据上面的意思,试着更新了下 …

汇编学习教程:走进 bp

引言 此前我们学习了 bp 寄存器,我们知道 bp 的作用是为访问栈空间数据提供方便,其默认绑定的段寄存器就是 SS 段寄存器。在此前的博文中博主提及到,bp 的作用其实不止方便访问栈空间数据这一条,对于栈如此重要的空间&#xff0c…

区块链技术:解锁未来的去中心化革命

在数字时代的浪潮中,区块链技术如一颗璀璨的明星崛起,被誉为解锁未来的去中心化革命。作为一种分布式账本技术,区块链不仅改变着传统商业模式,还催生了全新的经济形态和社会关系。本文将从技术原理、应用场景和前景展望三个方面&a…

spring security权限路由匹配restful格式的详情id设计

解决方案: 先直接说下解决方案,权限点设计成如下: /api/books/{id:\d*}问题描述: 获取书本详情的标准restful路由,一般是这样的/api/books/12, 12即该book的id,如果需要拥有访问该路由的权限…

【C语言初阶】带你轻松掌握指针基础知识(1)——指针的定义,类型,大小

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,这里是君兮_,最近刚回家有点懒,从今天开始恢复更新并开始更新新的刷题系列,我们先继续更新0基础入门C语言的内容,今天给大家带来的是指针方面的内容&…

【MYSQL基础】MYSQL用户管理

MYSQL用户管理 数据库的root用户拥有操作数据库的所有权限,如果要团队协作开发,为了避免有成员误操作,可以给成员创建一个权限较低的用户账号 创建用户 create user 用户名 identified by ‘密码’; mysql> create user dam identified …

数据劫持大揭秘:Vue的隐形力量和无限可能

文章目录 1. 初始化阶段2. 响应式侦测器3. 数据劫持4. 模板编译5.总结 Vue.js 通过数据劫持实现了数据的双向绑定。它使用了一个名为 “响应式系统” 的机制来追踪和响应数据的变化,从而自动更新相关的视图。 Vue 的数据劫持原理主要分为以下几个步骤: …

main函数和其他函数

##什么是main函数函数就很敏感,在我认为的函数函数就是功能 有系统给的也有自己写的 函数就是一个封装好的功能 function 函数,功能。main函数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9a92f39cf6a842f5a56dbc1689012ceb.png 函数的参数&am…

高压放大器工作原理以及参数介绍

高压放大器是一种电子器件,其主要作用是将输入信号的电压放大到输出端。由于高压放大器的输入和输出端的电平差很大,因此需要使用特殊的材料和技术来保证电路的可靠性和稳定性。下面我们就来详细介绍一下高压放大器的工作原理和参数介绍。 图&#xff1a…

推荐4款好用的在线作图软件,可一键安装

本文将介绍4个功能强大又可以免费使用的在线作图软件,可以帮助设计师更快地完成绘图工作,一起来看看吧! 1.即时设计 即时设计是一款功能强大的在线作图软件,它提供了丰富的绘图工具、层管理和样式库,让设计师可以轻松…

集群 第二章

目录 1.DR 模式 LVS 负载均衡群集部署 2.总结 1.DR 模式 LVS 负载均衡群集部署 DR 服务器: 192.168.83.104 NFS服务器: 192.168.83.103 Web 服务器1: 192.168.83.102 Web 服务器2: 192.168.83.101 …

(八)解析函数的无穷可微性与 Cauchy 型积分定理

本文主要内容包括: 1. 解析函数的无穷可微性1.1. 解析函数的高阶导数1.2. 导数估计式 —— Cauchy 不等式1.3. Liouville 定理1.4. 代数基本定理的一种证明 2. Cauchy 型积分定理2.1. Cauchy 型积分2.2. Cauchy 型积分定理 1. 解析函数的无穷可微性 1.1. 解析函数的…

状态检测防火墙

状态检测防火墙原理 对于已经存在会话表的报文的检测过程比没有会话表的报文要短很多。通过对一条连接的首包进行检测并建立会话后,该条连接的绝大部分报文都不再需要重新检测。这就是状态检测防火墙的“状态检测机制”,相对于包过滤防火墙的“逐包检测机制”的改进之处。这种…

黑马点评(达人探店)

达人探店 一、发布探店笔记 发布探店笔记功能是项目本身就完成了的功能,他会把图片存在本地,有兴趣可以去看源码,在UploadCOntroller类下 二、查看探店笔记 这个功能项目本身是没有完成这个接口的,所以需要我们自己去完成。 …

点击echart图即可获取对应代码的网址

PPChart - 让图表更简单 点击第一个数据中心即可获取对应的代码

在XAMPP环境中搭建wordpress网站教程

1、在xampp的安装目录中找到htdocs文件夹,在此文件夹中建立新文件夹,作本地网站要目录,如,wp-jianzhanpress。 2、将解压后的wordpress程序,放到该目录下。 3、启动XAMPP程序,点击“admin”。进入数据库管理…

Centos 7 下安装Redis

官网地址(英文):Redis 官网地址(中文):CRUG网站 or redis中文文档 Redis源码地址:GitHub - redis/redis: Redis is an in-memory database that persists on disk. The data model is key-v…

媲美postman?这款国产测试工具你知道吗

没有测试数据的用例就像一盘散沙,跑两步就跑不动了 没有测试数据,所谓的功能测试和性能测试全都是无米之炊。但我发现一个蛮诡异的事情,就是行业内很少会有人去强调测试数据的重要性,甚至市面上都没有人在做测试数据这门生意。 …

JMeter笔记(二)

个人学习笔记(整理不易,有帮助点个赞) 笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 目录 一:了解常用组件 二:创建测试计划 1)先新建一个测试计划 2&…