FS不会创建文件

时间:2015-11-04 17:41:41

标签: node.js coffeescript fs

我想创建一个简单的控制台应用程序,它可以根据文件名比较两个文件,并将结果输出到一个新文件中。

我的问题是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上运行,尝试在管理员下运行命令提示符,仍然没有。知道是什么导致了这个吗?

3 个答案:

答案 0 :(得分:1)

从stdin读取data变量,因此在结尾处包含换行符。这可能是造成非描述性ENOENT错误的原因。

您可以使用data = data.trim()

删除换行符(以及用户可能意外输入的任何其他空格)

这比substring解决方案更好,因为新行仅在Windows上有2个字符,在其他地方有1个字符。

答案 1 :(得分:0)

确保路径存在(不一定是文件本身,但文件夹结构),并且进程用户具有写入权限。

答案 2 :(得分:0)

ENOENT错误告诉您指定路径名的组件不存在 - 给定路径找不到实体(文件或目录)。

确保放置'dot': './path/to/file'