如何解决在节点的相对path?

最近遇到这种情况 – 我有一个像这样的目录path的环境variables:

var fooDir = process.env.FOO_DIR; 

我想确保这个目录存在一个同步mkdir(稍后的某个时间点):

 fs.mkdirSync(fooDir, mode); 

但是,如果用户通过一个真实的〜/ path节点提供了环境variables,则无法parsing它

 export FOO_DIR='~/foodir' 

有节点解决这个问题,而不是调用一个subprocessexec调用实际的壳? 目前我的解决scheme是做一个replace自己像这样:

 fooDir = fooDir.replace(/^~\//, process.env.HOME + '/'); 

只是好奇,如果有人有更好的解决scheme。

你说得对:〜由shell来扩展,而不是OS,就像*一样。 没有一个node.js包装的C文件函数可以处理,如果你想这样做,你必须自己去做replace,就像你所说的那样。 在支持允许相对文件path的configuration文件时,我自己用C语言完成了这个工作。

但是,你可能应该处理没有定义HOME的情况。 我相信这发生在非交互式login与bash,例如,用户可以随时select取消它。

查看Rekuire ,它是一个解决NodeJ中的相对path问题的节点模块。