为什么fs编写的文件可以在localhost中工作,但不能在heroku应用程序中工作



我使用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(/(rn|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写文件系统有什么限制吗?我不知道上面的代码在heroku上不起作用的原因。请帮忙。

使用fs时,应避免使用相对路径,而使用absolute路径。可以使用__dirname__filename。所以你可以测试这个:

fs.writeFile(`${__dirname}/views/files/testwritebeg.ejs`, bult1 , (err) => {                  
if (err) throw err;                           
});    

最新更新