【发布时间】:2021-04-20 07:13:45
【问题描述】:
我有一个托管在 Heroku 上的 vue 应用程序。现在,因为 heroku 不做静态应用,所以我写了一个简单的快速服务器来服务这个应用
//server.js
const express = require('express')
const serveStatic = require('serve-static')
const path = require('path')
app = express()
app.use((req, res, next) => {
if (process.env.NODE_ENV === 'production') {
req.headers['x-forwarded-proto'] !== 'https'
? res.redirect(301, 'https://' + req.hostname + req.originalUrl)
: next()
} else {
next()
}
})
app.use(serveStatic(path.join(__dirname, 'dist')))
const port = process.env.PORT || 80
app.listen(port)
并通过package.json将应用的构建过程与Heroku现有的工作流程挂钩
.
.
.
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"postinstall": "if test \"$NODE_ENV\" = \"production\" ; then yarn run build ; fi",
"start": "node server.js"
},
.
.
.
整个过程都有效,技术上环境变量也是如此。但是,当我使用process.env.VUE_APP_XXX 在 vue 中访问它们时,我发现我昨天在 heroku(在他们的仪表板中)设置的一些环境变量仍然未定义。
在开发中,我使用.env,它按预期工作。我的想法是,因为中间有快递服务器,所以事情并没有像我预期的那样工作。
有什么方法可以让这件事顺利运行,还是我最好使用托管 a-la Netflify 的静态网站?
【问题讨论】:
标签: node.js express vue.js heroku