2

我已经在 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 上本地运行良好,但呈现的电子邮件模板显示为<undefined></undefined>从 Azure 部署收到时。恐怕 Azure 上有些时髦的东西,我不能使用“fs”来加载文件,可能不得不使用 Blob。

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

作为一个健全的检查,我将它部署到 Nodejitsu 并且它工作正常。

非常感谢!

4

1 回答 1

3

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

作为一种快速测试的方法,您可以在 app.js 中添加如下内容:

// global
baseDir = __dirname;

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

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

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

于 2014-10-21T22:00:36.537 回答