【问题标题】:node.js and ncp module - fails to copy single filenode.js 和 ncp 模块 - 无法复制单个文件
【发布时间】:2016-07-28 12:55:21
【问题描述】:

我正在使用Node.js v6.3.1ncp v2.0.0

我只能让 ncp 复制目录的内容,但不能复制该目录中的单个文件。

以下是递归复制目录内容的代码:

var ncp = require("ncp").ncp;
ncp("source/directory/", "destination/directory/", callback);

...这里是相同的代码,但有一个文件作为源:

var ncp = require("ncp").ncp;
ncp("source/directory/file.txt", "destination/directory/", callback);

据我所知,ncp 是专门为递归复制目录而设计的,而不是单个文件?

我曾考虑过使用类似文件系统的 read/write 流函数,如 here 所述,但实际上为了保持一致性,我希望坚持使用 ncp。

更新:

我找到了另一个名为 node-fs-extra 的包,它可以满足我的需求,而无需我向操作中添加事件处理程序,就像我必须使用 fileSystem 读/写解决方案一样。

这是有效的代码:

var fsExtra = require("fs-extra");
fsExtra.copy("source/directory/file.txt", "destination/directory/file.txt", callback);

显然这仍然不一致,但至少不那么冗长。

【问题讨论】:

  • 查看他们的源代码,他们似乎只能复制一个文件。我不认为这很重要,但是为了您的意识,您不必在模块上调用 '.ncp()',您可以只使用 require('ncp') 并且生成的对象与在其上调用 .ncp() 相同,因为……原因。他们的代码有点丑。
  • @Paul 你能否提供一个语法示例,以便我知道我在哪里使用错误,谢谢。
  • 这仍然是您使用的语法。他们从字面上设置:module.exports = ncp; ncp.ncp = ncp;不知道为什么。所以它仍然是const ncp = require('ncp'); ncp(src, dest, cb);
  • 对不起,我应该更清楚,我的意思是你能提供一个使用 ncp 复制单个文件的示例。上面的语法对我不起作用。谢谢。
  • 我知道它不起作用;我要说的是单个文件没有不同的语法。他们在后台使用 fs.stats 来确定您是否正在抓取单个文件或目录,然后为每种情况调用不同的私有函数。这也是 cmets 不是答案 b/c 根据我在其源代码中看到的内容,我看不出您的代码无法正常工作的充分理由。

标签: node.js


【解决方案1】:

好的,我知道我做错了什么。

我试图将文件复制到目录中,因为我需要在目录中复制和命名文件。

所以这是我的原始代码不起作用:

var ncp = require("ncp");
ncp("source/directory/file.txt", "destination/directory/", callback);

...这里是固定的代码,注意在目标目录中包含一个文件名:

var ncp = require("ncp");
ncp("source/directory/file.txt", "destination/directory/file.txt", callback);

所以看起来 ncp 不会只是按原样获取文件,而是需要您在另一端指定文件名才能成功复制。我想我假设它只是将具有相同名称的文件复制到目标目录中。

【讨论】:

    【解决方案2】:

    我找到了另一个名为 node-fs-extra 的包,它可以满足我的需求,而无需我将事件处理程序添加到操作中,就像我必须使用 fileSystem 读/写解决方案一样。

    这是有效的代码:

    var fsExtra = require("fs-extra");
    fsExtra.copy("source/directory/file.txt", "destination/directory/file.txt", callback);
    

    显然这仍然不一致,但至少不那么冗长。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 2012-08-23
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      相关资源
      最近更新 更多