将字符串注入到从Node.JS应用程序中的服务器端环境变量在客户端上执行的Javascript文件中?

时间:2018-04-05 04:53:34

标签: javascript node.js

我有一个在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这样的模板引擎吗?那有点矫枉过正吗?

2 个答案:

答案 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);
        },
        },
    },
    },