【发布时间】:2019-04-30 10:21:53
【问题描述】:
我使用 fs writefile 方法将文件写入节点服务器。它在我的电脑上运行没有问题。但它不适用于生产(heroku)。
下面的代码适用于我的本地网络,但不适用于 heroku。当我在 heroku 上运行它时没有错误,但它不会覆盖现有文件。
router.post("/writefile/overwritefile",function(req,res){
if(req.body.bult1){
var bult1red = req.body.bult1;
var removenewline = bult1red.replace(/(\r\n|\n|\r)/gm,""); // remove new line space
var convertoarray = removenewline.split(','); // convert the string to an array
var i = 0;
var buls = "";
convertoarray.forEach(function(element, index, array){
buls+= "<li>" + element + "</li> \n";
i++;
if (i === array.length){
bult1 = '<ul> \n'+
buls +
'</ul>\n';
}
});
}else{
bult1 = "";
}
var writethis = '<!DOCTYPE html> \n'+
'<html>\n'+
'<head>\n'+
'<meta charset="UTF-8">\n'+
'<meta name="viewport" content="width=device-width, initial-scale=1.0">\n'+
'<meta http-equiv="X-UA-Compatible" content="ie=edge">\n'+
'<title> testing fs write </title> \n'+
'<style>\n'+
'content{\n'+
'border: 20px solid #bdc3c7;\n'+
'padding: 20px;\n'+
'width: 80%;\n'+
'margin: 20px auto;\n'+
'}\n'+
'</style>\n'+
'</head>\n'+
'<body>\n'+
'<div class="content">\n'+
bult1 + '\n'+
'<div/> \n' +
'</body>\n'+
'</html>\n';
fs.writeFile('views/files/testwritebeg.ejs', writethis, (err) => {
if (err) throw err;
});
res.redirect("/");
});
在heroku服务器上使用fs writefile系统有什么限制吗?我不知道上述代码在heroku上不起作用的原因。请帮忙。
【问题讨论】:
-
当我遇到这个问题时,我检查的第一件事(因为它通常是问题所在)是我试图将其保存到的位置实际上存在于服务器上。如
views/files/是一个实际目录 -
文件路径应以
__dirname开头以正确指向目录 -
是的,我用来写文件的目录确实存在。它适用于我的本地网络。问题出在 Heroku 服务器上。
-
我遇到了同样的问题,我遇到了this answer。从它下面的 cmets 中,我发现如果文件夹为空,它永远不会到达
Github并且永远不会到达Heroku。推荐的解决方法是在其中放置一个任意文件,例如.gitignore,引用自 answer。 -
这能回答你的问题吗? Appending files in node.js on heroku
标签: javascript node.js heroku fs