TypeScript定义与默认导出不匹配

时间:2019-07-15 14:11:07

标签: javascript typescript puppeteer typescript-typings

我正在尝试将Puppeteer与TypeScript,@types/puppeteer和Jest一起使用。

Puppeteer使用默认导出,其工作方式为pptr.test.js

import pptr from 'puppeteer'

pptr.launch(
  // ... config here
)

但是,当我安装@types/puppeteer并重命名为pptr.test.ts时,出现此TS错误:

  

模块'“ / home / jack / Documents / Extensions / messages-example / node_modules / @ types / puppeteer / index”'没有默认导出。

该代码可以使用Babel进行编译并在Jest中运行。

这些都不起作用,但是可以通过TS检查:

import { launch } from 'puppeteer'
import * as pptr from 'puppeteer'

两者都失败,并显示TypeError,例如“ ...不是函数”。

我的tsconfig.json:

{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "outDir": "lib",
    "sourceMap": true,
    "strict": true,
    "target": "es2017",
  }
}

@types/puppeteer错误吗?处理此类TypeScript情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

您需要在esModuleInterop的{​​{1}}道具下设置allowSyntheticDefaultImportscompilerOptions

然后您应该可以将其作为默认值导入。