2016-08-30 70 views
2

我試圖將文件從位置abc移動到位置xyz如果文件已經存在於位置xyz刪除它然後保存新文件。如果文件存在,則在Nodejs中移動文件否則創建文件

這裏是我的代碼

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); }) 

如果該文件存在,它只是簡單地刪除該文件,並沒有別的。

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

任何想法做什麼即時錯誤?

回答

0

我在我的代碼中的一些錯誤的諾言...對於未來我這裏是上面的代碼

'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} 
的工作版本
相關問題