如果文件存在,则在Nodejs中移动文件,否则创build文件

我试图将文件从位置abc移动到位置xyz如果该文件已经存在位置xyz删除它,然后保存新的。

这是我的代码

 const promises = { deleteFile: path => { return new Promise((resolve, reject) => { const fs = require('fs'); fs.stat(path, (err, stat) => { if (err === null) { fs.unlink(path, err => { if (err) { return reject(err) } resolve(); }) } else if(err.code == 'ENOENT') { console.log('File does not exist'); resolve(); } else { reject(err); } }); }); }, copyFile: (from, to) => { return new Promise((resolve, reject)=> { copyFile(from, to, (err) => { if (err) { return reject(err); } console.log(`Finished writing file ${to}`); resolve(); }) }) } } const copyFile = (from, to, overallCb) => { const fs = require('fs'); const rs = fs.createReadStream(from) const ws = fs.createWriteStream(to) let cbCalled = false; function done (err) { overallCb(err); cbCalled = true; } rs.on('error', (err) => { done(err); }) ws.on('error', (err) => { done(err); }) rs.pipe(ws); } ; const OUTPUT_PATH = `./js/libs/` , _NODE_MODULES = './node_modules/' , filePath = `${_NODE_MODULES}somePathToAFile` ; promises.deleteFile(`${OUTPUT_PATH}someFile.min.js`) .then(promises.copyFile(filePath, `${OUTPUT_PATH}someFile.min.js`)) .then(words => { console.log('**** done doing things ****'); }) .catch(error => { console.log(`ERROR`, error); }) 

如果文件存在,它只是简单地删除文件,什么也不做。

如果文件不存在,一切工作正常。

任何想法做什么即时错误?

我的代码中有一些承诺错误…对于未来我在这里是上述代码的工作版本

 'use strict'; const promises = { deleteFile: path => { return new Promise((resolve, reject) => { const fs = require('fs'); fs.stat(path, (err, stat) => { if (err === null) { fs.unlink(path, err => { if (err) { return reject(err) } resolve(`Removing document at ${path}`); }) } else if(err.code === 'ENOENT') { resolve('File does not exist'); } else { reject(err); } }); }); }, copyFile: (from, to) => { return new Promise((resolve, reject) => { copyFile(from, to, (err) => { if (err) { return reject(err); } resolve(`Finished writing file ${to}`); }) }) } } const copyFile = (from, to, overallCb) => { const fs = require('fs'); const rs = fs.createReadStream(from) const ws = fs.createWriteStream(to) let cbCalled = false; function done (err) { overallCb(err); cbCalled = true; } rs.on('error', done) ws.on('error', done) .on('close', done) rs.pipe(ws); } ; const OUTPUT_PATH = './js/libs/' , _NODE_MODULES = './node_modules/' , filePath = `${_NODE_MODULES}somePathToAFile` ; promises.deleteFile(`${OUTPUT_PATH}someFile.min.js`) .then(msg => { console.log(msg) return promises.copyFile(filePath, `${OUTPUT_PATH}someFile.js`) }) .then(msg => { console.log(msg) }) .catch(err => { // Do errory things}