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



我已经在Azure上部署了一些nodeJS代码。它使用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'来加载文件,可能不得不使用Blobs来代替。

这是Azure中的限制吗?或者这个问题与这个f无关。ReadFile方法?

作为一个完整性检查,我把它部署到Nodejitsu,它工作得很好。

多谢!

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

作为一种快速测试方法,你可以在app.js中添加如下内容:
// global
baseDir = __dirname;

那么你就可以从任何地方访问这个全局变量。我在路由器文件夹里。

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

__dirname总是返回当前文件的目录名。如果从根文件夹中的文件定义一个具有此值的变量,则将拥有应用程序基文件夹。我已经实现了这个,它的工作在azure和heroku。

相关内容

  • 没有找到相关文章