我可以在Microsoft Azure上的Node.JS中使用本机'fs'文件系统吗?

时间:2013-06-21 19:28:52

标签: node.js azure

我已经将一个有效的nodeJS代码部署到Azure。它使用Jade视图引擎,通过fs文件库提取模板:

function generateEmail(emailType, params, callback){
fs.readFile(__parentDir + '/emailTemplates/' + emailType + '.jade', 'utf8', function (err, data) {
    var fn = jade.compile(data);
    var body = fn({data: params, moment: moment});    //The data going in to the template
    callback(body);
});

}

它在我的Mac上本地工作正常,但从Azure部署收到时,呈现的电子邮件模板显示为<undefined></undefined>。我担心Azure上有一些时髦的东西,我不能使用'fs'来加载文件,而是可能不得不使用Blob。

这是Azure的限制吗?或者问题可能与此fs.ReadFile方法无关?

作为一个完整性检查,我将它部署到Nodejitsu,它工作正常。

非常感谢!

1 个答案:

答案 0 :(得分:2)

这正是我对azure和Node.JS的问题。我在挖掘许多节点变量后发现的解决方案是使用__file。

作为测试方法的快速方法,您可以添加到app.js中,例如:

// global
baseDir = __dirname;

然后你可以从任何地方访问这个全局变量。即在路由器文件夹内。

var defaultFile = path.join(baseDir, 'sample.txt');

__dirname始终返回当前文件的目录名称。如果您从根文件夹中的文件中定义一个具有此值的变量,您将拥有应用程序基础文件夹。我已经实现了这个并且它正在使用我的azure和heroku。