You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS 如何将异步函数返回的参数传递给另一个文件使用

实现方案

第一步:修改file1代码,正确返回异步结果并导出

你原有代码中的getToken没有返回值也没有对外导出,首先补全这两点,修改后代码如下:

// 注意NodeJS环境默认没有fetch,需要先安装node-fetch依赖,url请提前定义好
const fetch = require('node-fetch');
async function getToken(){
  // 增加return将异步执行结果抛出
  return fetch(url)
  .then(response => response.text())
  .catch(err => {
    console.error('获取token失败', err)
    throw err
  })
}
// 导出方法供其他文件调用
module.exports = getToken

第二步:修改file2代码,导入方法并等待异步结果

在需要用到token的位置前等待getToken的返回值即可,完全满足file2先运行、等异步结果返回再执行后续逻辑的要求,修改后代码如下:

const { ConsoleMessage } = require("puppeteer");
// 导入file1的getToken方法,路径替换为你实际的file1文件路径
const getToken = require("./file1")

const scraperObject = {
  url : url, // 替换为实际的目标页面地址
  async scraper(browser){
    try{
      let page = await browser.newPage();
      console.log(`Navigating to ${this.url}...`);
      await page.goto(this.url);
      // 等待file1的异步返回结果,拿到值后再执行后续逻辑
      const response = await getToken()
      await page.$eval("textarea#g-recaptcha-response", text => text.innerHTML = response)
      // 其他后续逻辑写在这里即可
    } catch(err) {
      console.error('爬虫执行出错', err)
    }
  }
}

module.exports = scraperObject

补充说明

  • 如果需要复用token避免重复发请求,可以在file1里加缓存逻辑,拿到token后存到变量里,后续调用直接返回缓存值即可。
  • 执行代码前先执行npm i node-fetch@2安装依赖,v2版本支持CommonJS导入,适配普通NodeJS项目。

内容的提问来源于stack exchange,提问作者user15887962

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:06:04