2016-08-30 3 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} 
의 작업 버전입니다 미래를 위해 ... 내 코드에서 몇 가지 약속 오류가 있었다
관련 문제