使用node.js从文件中读取环境变量

时间:2015-12-19 23:13:03

标签: javascript node.js bash

我在文件中有很多bash / shell变量,我想将它们读入node.js脚本(或者我猜是javascript)来评估它们并设置javascript变量。

e.g。该文件包含:

gateway_ip = 192.168.1.1

掩模= 255.255.255.0

端口= 8080

我尝试了以下内容:

function readConfigFile() {
    var filename="/home/pi/.data-test";

    fs.readFile(filename, 'utf8', function(err, data) {
        var lines = data.split('\n');
        for(var i = 0; i < lines.length-1; i++) {
         console.log(lines[i]);
         eval(lines[i]);
         console.log(gateway_ip);
         }

    });
}

并且它将行作为文本吐出,但我似乎无法生成javascript变量。错误是:

未定义:1 default_gateway = 192.168.1.1

我在这里错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:1)

你在这里做的是eval('gateway_ip=192.168.1.1')

192.168.1.1无效的javascript。它应该有引号。试试这个:

    var lines = data.split('\n');
    var options = {};
    for(var i = 0; i < lines.length-1; i++) {
      var parts = lines[i].split('=');
      options[parts[0].trim()] = parts.slice(1).join('=').trim();
    }
    // You now have everything in options. 

您可以使用global代替options在全局范围内设置这些变量。

答案 1 :(得分:0)

这不是JavaScript-ish。更简单的方法是使用JSON作为配置文件。例如,使用此config.json

{
    "gateway_ip": "192.168.1.1",
    "mask": "255.255.255.0",
    "port": "8080"
}

然后你可以简单地require

var config = require('./config.json');
console.log(config);

另外一个好处是,它还会捕获JSON文件中的格式错误。