【问题标题】:Node-express : fetch.Header() is not a constructorNode-express:fetch.Header() 不是构造函数
【发布时间】:2021-09-24 23:35:25
【问题描述】:

我在 node-express 应用程序中使用 node-fetch 模块,之前我曾经以这种方式导入它:

const fetch = require("node-fetch")

但是现在te=he version "node-fetch": "^3.0.0",它不允许我使用require,而是建议使用import 因为它是一个 ES 模块。

但我面临的主要问题是新版本中的标头,它会抛出错误 fetch.Headers() is not a constructor,尽管我一直在使用它直到上一个版本。 以下是我的代码:

const express = require('express');
const port = 8080;
const app = express();
const ejs = require('ejs');
const fetch = import("node-fetch");

app.use(express.json());

app.use(express.static(__dirname + "/public"));

app.get('/', (req, res) => {
    let myHeaders = new fetch.Headers();
    var uri = uri
    var options = {
        method: 'GET',
    };
    fetch(uri, options)
        .then(response => response.text())
        .then(result => {
            console.log(result);
            list = JSON.parse(result);
            res.render(__dirname + '/index.html');
        })
        .catch(error => console.log('error', error));
    
})

app.listen(port, () =>{
    console.log("Listening at 8080");
})

错误: TypeError: fetch.Headers 不是构造函数

【问题讨论】:

  • 对我来说这是由 next.js 动态导入引起的,没有警告我没有执行 yarn add node-fetch :-)

标签: node.js express rest node-fetch


【解决方案1】:

我没有导入 node-fetch 包,因为我只在 SSR 渲染时动态导入它(使用 next.js),所以我没有收到关于找不到包的错误

if( typeof window === 'undefined' ) {
    const Headers = (await import('node-fetch')).Headers
    headers = new Headers(headers)
}

这就是我出错的原因

【讨论】:

  • 我在快递中使用它
猜你喜欢
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 2021-01-11
  • 2015-12-04
  • 2018-11-29
  • 2016-12-04
相关资源
最近更新 更多