Javascript 为什么fs写入文件在localhost中工作,但在heroku应用程序中不工作?
我使用fs writefile方法将文件写入节点服务器。它在我的电脑上工作,没有问题。但它在生产上不起作用(heroku) 下面的代码适用于我的本地网络,但不适用于heroku。当我在heroku上运行它时,没有任何错误,但它不会覆盖现有文件Javascript 为什么fs写入文件在localhost中工作,但在heroku应用程序中不工作?,javascript,node.js,heroku,fs,Javascript,Node.js,Heroku,Fs,我使用fs writefile方法将文件写入节点服务器。它在我的电脑上工作,没有问题。但它在生产上不起作用(heroku) 下面的代码适用于我的本地网络,但不适用于heroku。当我在heroku上运行它时,没有任何错误,但它不会覆盖现有文件 router.post("/writefile/overwritefile",function(req,res){ if(req.body.bult1){ var bult1red = req.body.bult
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("/");
});
router.post(“/writefile/overwritefile”),函数(req,res){
if(要求主体bult1){
var bult1red=req.body.bult1;
var removenewline=bult1red.replace(/(\r\n |\n |\r)/gm,“”;//删除新行空间
var convertoarray=removenewline.split(',);//将字符串转换为数组
var i=0;
var buls=“”;
forEach(函数(元素、索引、数组){
buls+=“”+元素+“ \n”;
i++;
if(i==array.length){
bult1='\n'+
buls+
“
\n”;
}
});
}否则{
bult1=“”;
}
var writethis='\n'+
“\n”+
“\n”+
“\n”+
“\n”+
“\n”+
'正在测试fs写入\n'+
“\n”+
'内容{\n'+
'边框:20px实心#bdc3c7;\n'+
'填充:20px;\n'+
'宽度:80%;\n'+
'页边距:20px自动;\n'+
“}\n”+
“\n”+
'\n'+
“\n”+
“\n”+
bult1+“\n”+
'\n'+
“\n”+
“\n”;
fs.writeFile('views/files/testwritebeg.ejs',writethis,(err)=>{
如果(错误)抛出错误;
});
res.redirect(“/”);
});
在heroku服务器上使用fs writefile系统有任何限制吗?我不知道上面的代码在heroku上不起作用的原因。请帮忙 使用
fs
时,应避免使用相对路径,而使用绝对路径。您可以使用\uuuu dirname
和\uuuu filename
。
因此,您可以测试:
fs.writeFile(`${__dirname}/views/files/testwritebeg.ejs`, bult1 , (err) => {
if (err) throw err;
});
当我遇到这个问题时,我检查的第一件事(因为这通常是问题所在)是我试图保存它的位置实际上存在于服务器上。正如在views/files/
中一样,实际的目录文件路径应该以\uu dirname
开头,以正确地指向目录。是的,确实存在我用来编写文件的目录。它在我的本地网络上工作。问题出在heroku服务器上。我遇到了类似的问题。从下面的注释中,我发现如果文件夹是空的,它就永远无法访问Github
,也永远无法访问Heroku
。建议的修复方法是在其中放置一个任意文件,如.gitignore
,引用自此。这是否回答了您的问题@Vijay Singh问题在于没有使用目录。我使用绝对目录使用path.resolve
,但它不起作用。在我的问题中,第一个代码起作用,但第二个代码不起作用。@wzwd您确定path
已经存在吗?也许你应该先创建路径。@阿米尔:是的,我使用path创建了一个路径。解析并在上面的代码中使用它,然后我尝试了它,但它不起作用。