Node.js 使用fs.writeFile时出现eOnt错误

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

尝试使用fs.writeFile将文件写入同级目录。当使用
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");
});