1

我正在尝试读取Foreman用来读取启动节点服务器时可能需要的环境变量的.env文件。

我在用着:

var path = require("path"),
    _ = require("underscore"),
    fs = require("fs"),
    variables = fs.readFileSync(path.resolve(__dirname, ".env"), "utf8");

此时我有一个包含如下内容的字符串:

NODE_ENV=development
PORT=8080

我想将该字符串转换为一个对象,这样我就可以像这样读取它:

{
    NODE_ENV: "development",
    PORT: 8080
}

我不确定我该怎么做。我在想正则表达式,但我不知道如何逐行阅读。或者变量的类型如何?我可以检测它是字符串还是数字(我只是想看看是否有数字,这意味着它是一个数字吗?)?

4

1 回答 1

2

String.replace是简单解析的主要手段:

var env = {}
variables.replace(/(\w+)=(.+)/g, function($0, $1, $2) { env[$1] = $2 })

要将数值转换8080为数字,

variables.replace(/(\w+)=((\d+)|.+)/g, function($0, $1, $2, $3) {
    env[$1] = $3 ? Number($3) : $2;
});
于 2013-07-21T16:18:29.503 回答