js解决is not a function错误

经常不写分号,会导致一些意想不到错误。

今天俺跟大家介绍如何解决js中不带分号,导致的is not a function 错误。

js解决is not a function错误

俺习惯性写JavaScript不带分号。

我真的很喜欢。在我看来,语言更简洁。

你可能不喜欢这样,这是可以理解的。但事实就是这样。

分号是可选的。我们不需要添加它们。

然而,有时我们必须注意。特别是在Node.js中,我们使用require()来加载外部模块和文件。

在某些情况下,这可能会导致如下错误:

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

这是个奇怪的错误,对吧?

让我们看看如何复现这个错误。

我需要一个库,然后我必须运行一些代码在根级,我创建了一个立即调用异步函数:

const fs = require('fs')

(async () => {
  //...
})()

在require()之后,JS没有看到分号,我们用(另起了一行,JS认为我们在尝试执行一个函数。

它将require(‘fs’)作为函数的名称,如果模块导出返回一个函数,那么这个名称实际上是可以工作的。

但它不是,因此会报…不是一个函数错误。

我们如何解决这个问题?

我们必须加一个分号。

下面的两种方式可以解决这个问题。

方法一

/**
* 前端教程网
* https://www.pipipi.net/
*/

const fs = require('fs')

;(async () => {
  //...
})()

方法二

/**
* 前端教程网
* https://www.pipipi.net/
*/

const fs = require('fs');

(async () => {
  //...
})()

为了避免到处使用分号,我们不得不多写一些代码 : )

(8)
上一篇 2020年5月7日 下午1:10
下一篇 2020年5月8日 上午10:27

发表回复

登录后才能评论