繁体   English   中英

在 node.js 中使用 fs.openFileSync 时出现文件描述符错误

[英]Getting bad file descriptor error while using fs.openFileSync in node.js

我将 xlsx 文件中的数据放入 csv 文件中。 这是我的代码:-

const file = fs.openSync('/home/rahul/example/sample.csv', 'w')
const workbook = new exceljs.Workbook();
workbook.xlsx.readFile( path.join(__dirname, '' + args.filename)).then(function() {

    const worksheet = workbook.getWorksheet('sheet3');

    worksheet.eachRow(function(row){
        try{
            const buffer = array2CsvLine(row.values)
            fs.writeSync(file, buffer, { flag: 'a' })
        }
        catch(err){
            console.log('error related to fs.writeSync function')
            console.log(err)
        }
    })
    //fs.closeSync(file)
})
fs.closeSync(file)

它给了我这个错误:-

error related to fs.writeSync function
{ Error: EBADF: bad file descriptor, write
    at Object.writeSync (fs.js:569:3)
    at /home/rahul/min-wage/xls2csv.js:73:16
    at _rows.forEach.row (/home/rahul/min-wage/node_modules/exceljs/lib/doc/worksheet.js:515:11)
    at Array.forEach (<anonymous>)
    at Worksheet.eachRow (/home/rahul/min-wage/node_modules/exceljs/lib/doc/worksheet.js:513:18)
    at /home/rahul/min-wage/xls2csv.js:70:15 errno: -9, syscall: 'write', code: 'EBADF' }

但是,如果我使用注释的fs.closeSync(file) ,那么它就可以正常工作。 我不知道为什么会这样? 我想,我也可以在全局位置关闭文件。

调用:

fs.closeSync(file)

...在 promise 解析之前调用。 只需将它从最后一行中删除并取消注释 promise 中的另一个调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM