IIFE。TypeError:require(...)(...)不是函数

Ami*_*irA 2 node.js iife

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

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

(async ()=>{
    const response = await fetch(url)
    const data = await response
    console.log(data)
})()
Run Code Online (Sandbox Code Playgroud)

错误

$ node api.js TypeError:require(...)(...)不是一个函数

我在这里想念什么?谢谢。

Nik*_*des 7

在某些情况下,自动分号插入(ASI)无法正常工作。

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

要改善这一点,只需在IIFE前面加上分号即可:

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

;(async () => {
    const response = await fetch(url)
    console.log(response)
})()
Run Code Online (Sandbox Code Playgroud)

或如@estus在注释中所建议,只需避免编写无分号的代码。

  • 我建议做相反的事情,不要依赖 ASI。这种代码风格很奇怪(嘿,[标准](https://github.com/standard/standard))并且导致的问题比它解决的要多,只是一个开发人员最终需要改掉的坏习惯。 (2认同)