【问题标题】:IIFE. TypeError: require(...)(...) is not a function国际教育基金会。 TypeError: require(...)(...) 不是函数
【发布时间】:2019-04-10 16:39:19
【问题描述】:

运行简单的脚本。出错了。

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

我在这里缺少什么? 谢谢你。

【问题讨论】:

  • 在您的 IIFE 之前的 ;

标签: node.js iife


【解决方案1】:

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 在 cmets 中建议的那样,避免编写无分号代码。

【讨论】:

  • 我建议做相反的事情,不要依赖 ASI。这种代码风格很奇怪(嘿,Standard),导致的问题多于解决的问题,只是开发人员最终需要改掉的一个坏习惯。
  • @estus 我完全不同意,但我想这一切都归结为偏好。
猜你喜欢
  • 2016-07-06
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 2018-03-11
  • 2021-07-21
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多