【发布时间】:2020-12-21 02:14:26
【问题描述】:
对于我的 Web 应用程序,我在后端使用 Express、Node.js,在前端提供一些 HTML 文件。我没有使用任何前端框架。
在后端,我指定前端文件的位置:
app.use('/public', express.static(path.resolve(__dirname, "../public")));
在public 文件夹中,我放置了所有前端HTML 文件。我也有一些 Express 路由器来为用户提供正确的文件:
router.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "../public/html/main/example.html"));
});
在example.html 文件中,它需要一个JS 文件<script src="/resource/js/script1" async></script> 在script1 中,我使用的是公钥pk_test_wefwefeweffwe。该密钥仅用于开发。对于生产,我需要一个新密钥pk_live_woefiweoifnweoif。现在,每当我们实时部署。我必须手动更改该密钥。我想知道是否有一种自动的方法。
在 node.js 后端,我可以用process.env.NODE_ENV 检测我们是在生产还是开发。但这在 script1 这样的前端 JS 文件中是无法检测到的。我想过根据后端环境是 prod 还是 dev 来提供不同的 HTML 文件,但这似乎有点乏味,因为我每次进行更改时都必须更新 HTML/JS 文件。
是否有一种方便的方法来制作/提供不同的前端文件(或根据环境是 prod 还是 dev 修改前端文件的一部分),具体取决于环境是 prod 还是 dev?
【问题讨论】:
-
我觉得最简单的方法是让
script1能够分辨它所处的环境。我知道你提到这是不可能的,但我觉得必须有某种方法(即使只是看一下 URL)。如果这真的不可能,您的应用程序部署是什么样的?如果您有任何类型的自动化,它可以在部署期间注入正确的变量。
标签: javascript node.js express