代码之家  ›  专栏  ›  技术社区  ›  andromeda

如何使用node写入文件

  •  1
  • andromeda  · 技术社区  · 7 年前

    我正试图将一些html写到一个文件中,如下所示,但我一直收到一个错误:

    var date = new Date(), year = date.getFullYear(), month = date.getMonth() + 1, day = date.getDate(); 
    
    var folderName = year + '-' + month + '-' + day; 
    
    var path = "public/" + folderName; 
    
    fs.ensureDir(path).then(() => { 
    
    console.log('success!') }).
    catch(err => { console.error(err) }) 
    
    path = path + '/' + date.getTime() + ".html"; 
    
    let html = await page.evaluate(() => 
    document.body.innerHTML); 
    
    require('fs').write(path, html, "w");
    

    错误:

    未处理的PromiseRejectionWarning:Typeerror:第一个参数必须是 文件描述符 在object.fs.write

    我如何解决这个问题?

    2 回复  |  直到 7 年前
        1
  •  1
  •   user3210641    7 年前

    你应该用 fs.writeFile() 而不是 fs.write()

    请注意,如果存在同名文件,则该文件将替换为新文件。但考虑到你的命名习惯,这永远不会发生。

        2
  •  1
  •   Jose Mato    7 年前

    看看你的例子,你应该使用fs.writefile:

    const fs = require('fs');
    fs.writeFile('YOUR_PATH', 'YOUR_HTML_TEXT', (err) => {
      if (err) {
        return console.error(err); 
      }
    
      console.log('file created');
    });
    

    为了添加更多信息,您尝试使用的函数:

    fs.write(fd, string[, position[, encoding]], callback)
    

    需要一个文件描述符,这是通过方法open返回的标识符:

    fs.open(path, flags[, mode], callback)