fs.writeFile创建空文件(node.js)

fs.writeFile创建空文件(node.js),node.js,fs,Node.js,Fs,我正在尝试用node.js、cheerio和puppeter编写一个剪贴脚本 目前我遇到的问题是如何使writeFile()函数正常工作 const puppeteer = require('puppeteer'); const $ = require('cheerio'); const fs = require('fs'); const url = 'https://www.made-up-url.com/'; puppeteer .launch() .then(functi

我正在尝试用node.js、cheerio和puppeter编写一个剪贴脚本

目前我遇到的问题是如何使
writeFile()
函数正常工作

const puppeteer = require('puppeteer');
const $ = require('cheerio');
const fs = require('fs');
const url = 'https://www.made-up-url.com/';

puppeteer
    .launch()
    .then(function(browser) {
        return browser.newPage();
    })
    .then(function(page) {
        return page.goto(url).then(function() {
            return page.content();
        });
    })
    .then(function(html) {
        let scrapedTitle = $('h1', html).each(function() {
            return $(this).text();
        });
        let scrapedDesc = $('#something-else > div > p', html).each(function() {
            return $(this).text();
        });

        // Both console logs are outputted as strings, as expected
        console.log(scrapedTitle[0].children[0].data); // "Some title"
        console.log(scrapedDesc[0].children[0].data); // "The description is like this."

        fs.writeFile("data.json", JSON.stringify(scrapedTitle[0].children[0].data), 'utf8', function(err) {
            if(err) {
                return console.log(err);
            }
            console.log("The data has been scraped and saved successfully! View it at './data.json'");
        });

        process.exit();
    })
    .catch(function(err) {
        console.log(err);
        process.exit();
    });


writeFile()
以前使用过类似这样的
fs.writeFile(“data.json”、json.stringify(html)、'utf8',function(err){
,但现在这似乎也不起作用。当我运行此脚本时,正如预期的那样创建了该文件,但它始终是空的,即使这两个
console.log()
显示应该有有效字符串要写入。没有错误。有什么想法吗?

您有下面一行,
进程。退出();
正在文件写入操作之前关闭进程:

fs.writeFile("data.json", JSON.stringify(scrapedTitle[0].children[0].data), 'utf8', function (err) {
    if (err) {
        return console.log(err);
    }
    console.log("The data has been scraped and saved successfully! View it at './data.json'");
});

process.exit();
您可以将其更改为类似以下内容,以便在关闭文件之前完成文件写入操作:

fs.writeFile("data.json", JSON.stringify(scrapedTitle[0].children[0].data), 'utf8', function(err) {
    if(err) {
        return console.log(err);
        process.exit();        
    }
    console.log("The data has been scraped and saved successfully! View it at './data.json'");
    process.exit();
});

您有下面一行,
进程.exit();
在文件写入操作之前关闭进程:

fs.writeFile("data.json", JSON.stringify(scrapedTitle[0].children[0].data), 'utf8', function (err) {
    if (err) {
        return console.log(err);
    }
    console.log("The data has been scraped and saved successfully! View it at './data.json'");
});

process.exit();
您可以将其更改为类似以下内容,以便在关闭文件之前完成文件写入操作:

fs.writeFile("data.json", JSON.stringify(scrapedTitle[0].children[0].data), 'utf8', function(err) {
    if(err) {
        return console.log(err);
        process.exit();        
    }
    console.log("The data has been scraped and saved successfully! View it at './data.json'");
    process.exit();
});