我想创建一个简单的控制台应用程序,它可以根据文件名比较两个文件,并将结果输出到一个新文件中。
我的问题是NodeJS拒绝创建一个新文件(如果它不存在),即使我手动创建它也不会存在。
compare = (data) -> # data is being read from process.stdin
fname = "#{data}_compare.txt"
stdout.write "Attempting to compare #{data}" # stdout = process.stdout
fs.writeFileSync fname, 'A test.'
NodeJS在两种情况下都返回Error: ENOENT, no such file or directory
(当我想要它创建文件时,以及文件已经存在的时候)。
我希望在运行应用程序的同一文件夹中创建文件,因此路径根本不应该是一个问题(在错误消息中确实是正确的)。
我也尝试指定{flags: 'w'}
,但就我所知,这是默认值,所以它改变了注意。
我在Windows 10上运行,尝试在管理员下运行命令提示符,仍然没有。知道是什么导致了这个吗?
答案 0 :(得分:1)
从stdin读取data
变量,因此在结尾处包含换行符。这可能是造成非描述性ENOENT
错误的原因。
您可以使用data = data.trim()
这比substring
解决方案更好,因为新行仅在Windows上有2个字符,在其他地方有1个字符。
答案 1 :(得分:0)
确保路径存在(不一定是文件本身,但文件夹结构),并且进程用户具有写入权限。
答案 2 :(得分:0)
ENOENT错误告诉您指定路径名的组件不存在 - 给定路径找不到实体(文件或目录)。
确保放置'dot':
'./path/to/file'