【问题标题】:data is not been displayed from one file to another file in javascript using nodejs使用nodejs的javascript中的数据没有从一个文件显示到另一个文件
【发布时间】:2021-08-31 08:05:39
【问题描述】:

我创建了两个文件 index.js 和 image.js 文件。我在 index.js 文件中调用 image.js 文件。它正在工作,但它没有在 json 文件中显示数据。只有图像变量名称显示在我的 json 文件中。请帮忙!!!

image.js
const axios= require ('axios');
const cheerio=require('cheerio');
const request=require('request');

 async function imageNames() {
  const resp = await axios.get('https://www.google.com/');
  const $ = await cheerio.load(resp.data);
  let listImages = [];

  $('img').each((i, elem) => {
      listImages.push({
        name: $(elem).find('a').attr('href'),
        dom_data: $(elem).attr('')
      })
     
  });
  console.log(listImages);

}
module.exports={imageNames}

index.js
const request=require('request');
const axios = require("axios");
const cheerio = require("cheerio");
const fs = require("fs");
const image=require('./image');
const url = "https://www.google.com";
axios.get(url).then((res) => {
  const $ = cheerio.load(res.data);
const pageTitle = $("title").text();
 image.imageNames();
const contentJSON = {
    title: pageTitle.trim(),
    url:url.trim(),
    image:image 
};
const artFinal = JSON.stringify(contentJSON);
  const filename = pageTitle.slice(0, 9).trim() + ".json";
  fs.writeFileSync(filename, artFinal);
});

google.json file
{"title":"Google","url":"https://www.google.com","image":{}}

它只显示 image.js 文件中的变量数据没有显示在控制台上。我将其保存为 json 格式。

【问题讨论】:

  • const image = require('./image') 返回对象,试试这个:const {imageNames} = require('./image);,然后在回调中等待 fn:axios.get().then(async () => { const image = await imageNames() })。也从imageNames返回东西
  • @Eggy 对不起,你能告诉我我需要在哪个文件中编写上面的代码:axios.get().then(async () => { const image = await imageNames() })我是菜鸟,无法按照答案进行操作。如果您可以在我原来的两个文件中进行更改并粘贴相同内容,将会很有帮助。

标签: javascript node.js json axios


【解决方案1】:
const { imageNames } = require('./image');

这应该可以工作

【讨论】:

    【解决方案2】:

    你没有从imageNames 返回任何东西。而且也不使用该函数的返回值,而是使用模块本身(它包含一个函数,这就是为什么你从JSON.stringify 获得空对象的原因)。在控制台中自己尝试一下:

    JSON.stringify({ thisIsSomeFunction() {} }); // "{}"
    

    下面是固定代码:

    image.js

    const axios = require('axios');
    const cheerio = require('cheerio');
    const request = require('request');
    
    async function imageNames() {
      const resp = await axios.get('https://www.google.com/');
      const $ = await cheerio.load(resp.data);
      const listImages = [];
    
      $('img').each((i, elem) => {
          listImages.push({
            name: $(elem).find('a').attr('href'),
            dom_data: $(elem).attr('')
          })
         
      });
      
      // return data, otherwise functions will implicitly return `undefined`
      return listImages;
    }
    
    module.exports = {
      imageNames
    }
    

    index.js

    const request = require('request');
    const axios = require("axios");
    const cheerio = require("cheerio");
    const fs = require("fs");
    const { imageNames } = require('./image');
    
    const url = "https://www.google.com";
    
    // pass async function so you can `await` promises inside it
    axios.get(url).then(async (res) => {
      const $ = cheerio.load(res.data);
      const pageTitle = $("title").text();
    
      // get data from function in *image.js*
      const image = await imageNames();
      const contentJSON = {
        title: pageTitle.trim(),
        url:url.trim(),
        // put returned data into an object
        image 
      };
      const artFinal = JSON.stringify(contentJSON);
      const filename = pageTitle.slice(0, 9).trim() + ".json";
    
      fs.writeFileSync(filename, artFinal);
    });
    

    【讨论】:

      【解决方案3】:

      拖车形式,

      对于文件中的许多函数或方法;

      const image =require('./image');
      
      image.imageNames
      

      只有一个;

      const { imageNames } = require('./image');
      
      imageNames
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-08
        • 1970-01-01
        • 1970-01-01
        • 2018-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多