IIFE. TypeError: require(...)(...) is not a function

IIFE. TypeError: require(...)(...) is not a function

运行 简单 脚本 。出错了。

const fetch = require("node-fetch")
const url = "https://www.someurl.com"

(async ()=>{
    const response = await fetch(url)
    const data = await response
    console.log(data)
})()

错误

$ node api.js TypeError: require(...)(...) is not a function

我在这里错过了什么? 谢谢你。

Automatic Semicolon Insertion(ASI) 在某些情况下并不像您期望的那样工作。

IIFEs 属于其中一种情况,其中括号与前一行代码连接在一起。

为了改善这个问题,只需在您的 IIFE 前面加上分号:

const fetch = require("node-fetch")
const url = "https://www.someurl.com"

;(async () => {
    const response = await fetch(url)
    console.log(response)
})()

或者正如@estus 在评论中建议的那样,避免编写无分号的代码。