TypeScript报错无法将WebdriverAjax命名空间作为值调用如何解决?
问题修复方案
该报错的根因是wdio-intercept-service为CommonJS模块,TypeScript默认导入规则会将其导出内容识别为命名空间类型,不允许作为函数值直接调用,可通过以下两种方法修复:
方案1:调整导入语法
将默认导入替换为TypeScript兼容CommonJS模块的专属导入写法:
import WebdriverAjax = require('wdio-intercept-service'); const interceptServiceLauncher = WebdriverAjax();
修改后代码可直接正常运行。
方案2:修改TypeScript全局配置
如果要保留原有ES模块默认导入的写法,只需在项目的tsconfig.json中开启两项配置即可:
{ "compilerOptions": { "esModuleInterop": true, "allowSyntheticDefaultImports": true } }
开启配置后TypeScript会自动完成CommonJS模块的默认导出适配,原有代码不需要做任何修改即可正常执行。
内容的提问来源于stack exchange,提问作者utf_8
相关产品推荐
相关产品推荐

