【问题标题】:NodeJS fs.rename always thrown an errorNodeJS fs.rename 总是抛出错误
【发布时间】:2017-02-06 22:57:29
【问题描述】:

我不明白fs.rename() 的一件事,为什么这段代码总是抛出错误?

文件已正确重命名,但每次我收到此错误Error: ENOENT: no such file or directory, rename '/path/to/file/example.log' -> '/path/to/file/example_1.log'

var fs = require('fs');
var mv = fs.rename('example.log', 'example_1.log', function(err) {

  if(err instanceof Error)
    throw err;

});

【问题讨论】:

  • 也许可以尝试检查前后目录中的内容,您可以使用fs.readdirSync()轻松做到这一点。
  • 不只是文件名,而是给出你想要重新命名的文件名的完整路径。
  • 这段代码被简化了,我提供了文件的完整路径。旧文件存在,但新文件不存在。

标签: node.js fs


【解决方案1】:

当我运行您的确切代码时:

var fs = require('fs');
var mv = fs.rename('example.log', 'example_1.log', function(err) {

  if(err instanceof Error)
    throw err;

});

(唯一的区别是添加 fs 要求)。

然后,当我在当前目录中没有文件时,我会收到错误消息。

但是当我创建 example.log 并运行程序时,我没有收到任何错误并且文件被重命名。

当然下次我会再次收到错误,因为我不再拥有原来名称的文件。

你确定它不适合你吗?

顺便说一下,而不是

if (err instanceof Error)

您可能想使用:

if (err)

以防万一您的错误不是 Error 的实例,但仍然是已定义的(在使用某些模块时可能是这样)。

【讨论】:

  • 感谢您的回答!我已经修复了代码,我已经使用了var fs = require('fs');。我忘记穿了。目前代码工作完美,这就是为什么我不明白这个错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多