文章首发于:clawhub.club


想要实现文件复制功能,所以翻了一下nodejs的API文档,惊喜的发现,支持啊!!


fs.copyFile(src, dest[, flags], callback)

新增于: v8.5.0
文档内容如下:

  • src  |  |  要拷贝的源文件名。
  • dest  |  |  拷贝操作的目标文件名。
  • flags  用于拷贝操作的修饰符。默认值: 0
  • callback 

异步地将 src 拷贝到 dest。 默认情况下,如果 dest 已经存在,则覆盖它。 除了可能的异常,回调函数没有其他参数。 Node.js 不保证拷贝操作的原子性。 如果在打开目标文件用于写入后发生错误,则 Node.js 将尝试删除目标文件。

flags 是一个可选的整数,指定拷贝操作的行为。 可以创建由两个或更多个值按位或组成的掩码(比如 fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE)。

  • fs.constants.COPYFILE_EXCL - 如果 dest 已存在,则拷贝操作将失败。
  • fs.constants.COPYFILE_FICLONE - 拷贝操作将尝试创建写时拷贝(copy-on-write)链接。如果平台不支持写时拷贝,则使用后备的拷贝机制。
  • fs.constants.COPYFILE_FICLONE_FORCE - 拷贝操作将尝试创建写时拷贝链接。如果平台不支持写时拷贝,则拷贝操作将失败。
1
2
3
4
5
6
7
8
const fs = require('fs');

// 默认情况下将创建或覆盖目标文件。
fs.copyFile('源文件.txt', '目标文件.txt', (err) => {
if (err) throw err;
console.log('源文件已拷贝到目标文件');
});

如果第三个参数是数字,则它指定 flags:

1
2
3
4
5
const fs = require('fs');
const { COPYFILE_EXCL } = fs.constants;

// 通过使用 COPYFILE_EXCL,如果目标文件存在,则操作将失败。
fs.copyFile('源文件.txt', '目标文件.txt', COPYFILE_EXCL, callback);

但是在项目中使用的时候就报错,说找不到这个方法:

image.png

因为是小白一个,所以各种找资料,问公司前端同事,给出的方案就是直接写个小东西执行,发现是有这个方法的,猜测是打包的问题。后来在网上找了一个脚手架,测试通过。。。因该就是打包的问题,虽然我现在还不懂那个家伙。
package-lock.json:说是为了版本的强制统一。

脚手架地址:https://github.com/SimulatedGREG/electron-vue

中文文档:https://simulatedgreg.gitbooks.io/electron-vue/content/cn/

就这样吧,慢慢学。