Node.js 使用fs.writeFile时出现eOnt错误
尝试使用fs.writeFile将文件写入同级目录。当使用Node.js 使用fs.writeFile时出现eOnt错误,node.js,fs,Node.js,Fs,尝试使用fs.writeFile将文件写入同级目录。当使用Sitemap.xml到同一个目录中,但不使用相对路径时,这可以正常工作。public目录存在,无论Sitemap.xml是否存在,它都会给出相同的错误 相关dir结构: /public Sitemap.xml app files /create-sitemap index.js - file containing code below app.js 在节点中使用相对路径时,它们与节点进程相关。因此,如果从/Use
Sitemap.xml
到同一个目录中,但不使用相对路径时,这可以正常工作。public
目录存在,无论Sitemap.xml
是否存在,它都会给出相同的错误
相关dir结构:
/public
Sitemap.xml
app files
/create-sitemap
index.js - file containing code below
app.js
在节点中使用相对路径时,它们与节点进程相关。因此,如果从
/Users/tomchambers/projects/project/
目录运行脚本,如节点create sitemap/index.js
,它将查找不存在的/Users/tomchambers/projects/public/sitemap.xml
文件
在本例中,可以使用\uuu dirname
全局变量,该变量返回:
当前正在执行的脚本所在的目录的名称
因此,您的代码应该如下所示:
var path = require('path');
fs.write(path.join(__dirname, '../public/Sitemap.xml'), data.toString(), function(err) {
if (err) throw err;
console.log("Wrote sitemap to XML");
});
对我来说,问题是给定的文件名包含Windows上不允许的字符
具体来说,我尝试在名称中添加时间戳,例如
10:23:11
,但不允许使用:
,这导致了此错误。您的项目文件夹结构如何?我建议使用process.chdir()
将应用程序的工作目录更改为\uu dirname(或者更有用的路径,例如使用asar). 这将允许您使用相对路径而无需任何额外的麻烦。当我试图使用path.join('abc','.','pdf')
生成fileName
时,遇到了这个错误,它在'字符前后放置了一个'/'
。
字符。希望这句话能帮助别人
var path = require('path');
fs.write(path.join(__dirname, '../public/Sitemap.xml'), data.toString(), function(err) {
if (err) throw err;
console.log("Wrote sitemap to XML");
});