FS 不会创建文件

FS won't create file

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

我的问题是,如果新文件不存在,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 returns Error: ENOENT, no such file or directory 在这两种情况下(当我希望它创建文件时,以及当文件已经存在时)。

我希望在与应用程序 运行 相同的文件夹中创建文件,因此路径根本不应该成为问题(并且在错误消息中确实是正确的)。

我也尝试指定 {flags: 'w'},但据我所知,这是默认值,所以它改变了注意。

我 运行ning 在 Windows 10,也尝试过 运行ning 在管理员下的命令提示符,仍然没有。知道是什么原因造成的吗?

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

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

确保您输入 'dot': './path/to/file'

data 变量是从标准输入中读取的,因此在末尾包含一个换行符。这可能是导致非描述性 ENOENT 错误的原因。

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

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

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