You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js通过PowerShell调用fs.writeFile无法创建新文件的问题排查

问题:Node.js fs.writeFile报错ENOENT:找不到文件或目录

我使用常用文本编辑器创建并保存了createFile.js文件,以管理员权限打开PowerShell命令行,执行node .\createFile.js时,出现错误提示:

Error: ENOENT: no such file or directory, open 'C:\ProgramData\BigObject File - 2023-5-15_15:37:4.json'

我的代码如下:

var fs = require('fs');
var workingDir = "C:\\ProgramData\\";
var bigObj = {
    "items": []
};
var data = JSON.stringify(bigObj);
now = new Date();
fn = workingDir + 'BigObject File - ' + now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate() + '_';
fn += now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds() + '.json';
fs.writeFile(fn, data, (err)=> {
    if (err) throw err;
    console.log('File saved: '+fn);
});

根据Node.js官方文档,使用fs.open或fs.writeFile应该能够创建新文件,但我仍遇到该错误,请问我忽略了什么关键点?


解决方法

  • 文件名包含Windows系统非法字符:Windows不允许文件名中出现冒号(:),你生成的文件名里用了时间中的冒号(比如15:37:4),这直接导致系统无法识别该文件路径,所以抛出ENOENT错误。
  • 修改文件名中的非法字符:把时间部分的冒号替换成横杠(-)或者下划线(_)这类合法字符即可。修改后的代码片段如下:
fn += now.getHours() + '-' + now.getMinutes() + '-' + now.getSeconds() + '.json';
  • 注意事项:Windows文件名的非法字符包括 < > : " / \ | ? *,生成动态文件名时必须避开这些字符,否则都会出现类似的路径识别错误。

内容的提问来源于stack exchange,提问作者Bill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:35:23