我有一个在Ubuntu 14.04 LTS盒子上运行的Node.JS v8.11.1应用程序。该应用程序提供AngularJS Javascript文件和使用它们的HTML文件。在将Javascript文件发送到客户端(即用户的浏览器)之前,我希望将一个字符串值注入到源自服务器上的环境变量的Javascript文件之一。
我知道我可以使用" process.env。{ environment.variable name }"来访问服务器端的环境变量。我需要知道的是如何获取该值,将其注入我的Javascript文件中,以便当Javascript文件在客户端执行时,它的代码中包含所需的字符串。例如:
服务器端的环境变量:
SOME_ENV_VAR = 12345
服务器端源文件中的Javascript语句:
var someVar = "REPLACE ME AT RUNTIME";
源文件中的Javascript语句到达客户端时:
var someVar = "12345";
我该怎么做?我应该使用像Jade / Pug这样的模板引擎吗?那有点矫枉过正吗?
答案 0 :(得分:1)
app.get("some-script.js", (req, res) => {
fs.readFile("some-script.js", (err, file) => {
res.send(file.replace("12345", process.env.sth));
});
});
发送时只需更换即可。或者,您可以在启动时modify the file:
fs.writeFileSync("some-script.js", fs.readFileSync("some-script.js").replace("12345", process.env.arg));
答案 1 :(得分:1)
您可以通过像Grunt或Gulp这样的Task runner来解决您的问题。或者您也可以使用Webpack在发布之前捆绑您的文件。此节点模块对您有所帮助。 https://www.npmjs.com/package/grunt-contrib-copy
copy: {
main: {
src: 'src/file.js',
dest: 'src/file.min.js',
options: {
process: function (content, srcpath) {
return content.replace('REPLACE ME AT RUNTIME',SOME_ENV_VAR);
},
},
},
},