我正在使用带有打字稿的 webdriverio mocha 框架。 @wdio/cli": "^7.25.0" NodeJs v16.13.2 NPM V8.1.2
我在
tsconfig.json
遇到以下错误
JSON schema for the TypeScript compiler's configuration file
Cannot find type definition file for '@wdio/globals/types'.
The file is in the program because:
Entry point of type library '@wdio/globals/types' specified in compilerOptions
我的
tsconfig.json
{
"compilerOptions":
{
"moduleResolution": "node",
"module": "CommonJS",
"types":
[
"node",
"@wdio/globals/types",
"expect-webdriverio",
"@wdio/mocha-framework",
],
"lib":
[
"dom",
"es7"
],
"target": "es2022"
}
}
我的
package.json
{
"name": "mocha-template",
"version": "1.0.0",
"description": "",
"main": "index.js",
"keywords": [],
"author": "",
"license": "ISC",
"scripts":
{
"WDIO": "npx wdio run ./test/config/wdio.web.conf.ts"
},
"dependencies": {
"@types/node": "^18.8.3",
"@wdio/cli": "^7.25.0",
"@wdio/junit-reporter": "^7.25.1",
"@wdio/local-runner": "^7.25.1",
"@wdio/mocha-framework": "^7.25.1",
"@wdio/sauce-service": "^7.25.1",
"@wdio/spec-reporter": "^7.25.1",
"chai": "^4.3.6",
"chai-http": "^4.3.0",
"chromedriver": "^108.0.0",
"deepmerge": "^4.2.2",
"dotenv": "^16.0.3",
"eslint": "^8.25.0",
"eslint-plugin-mocha": "^10.1.0",
"eslint-plugin-prettier": "^4.2.1",
"fs-extra": "^10.1.0",
"moment": "^2.29.4",
"prettier": "^2.7.1",
"ts-node": "^10.9.1",
"typescript": "^4.8.4",
"wdio-chromedriver-service": "^8.0.0",
"wdio-video-reporter": "^3.2.3"
}
}
我可以运行我的测试,但这个错误更烦人。 如果我打开任何测试文件意味着它显示
browser
和 $
错误
如何解决以上问题
对于
$
Cannot find name '$'. Do you need to install type definitions for jQuery? Try `npm i --save-dev @types/jquery` and then add 'jquery' to the types field in your tsconfig.
对于
browser
Cannot find name 'browser'.
建议将根据您使用的 WebDriverIO 版本(以及您在版本 7 中使用同步模式还是异步模式)而变化。以下是可用于版本 7 和版本 8 的设置:
将相关片段添加到您的
tsconfig.json
。
版本 7 文档在这里
异步
{
"compilerOptions": {
"types": ["node", "webdriverio/async"]
}
}
同步
{
"compilerOptions": {
"types": ["node", "webdriverio/sync"]
}
}
将此代码段添加到您的 tsconfig 中:此处为版本 8 文档
{
"compilerOptions": {
"types": ["node", "@wdio/globals/types"]
}
}
所以您遇到麻烦的原因可能是因为您尝试将版本 8 的类型导入到 webdriver 版本 7 项目中。
没有类型
@wdio/globals/types
,您只需使用同步或异步包中的一种。 https://v7.webdriver.io/docs/typescript/#framework-setup
{
"compilerOptions": {
"types": ["node", "webdriverio/async"]
}
}
就我而言,我错误地将 typeRoots 包含在 tsconfig.json 中。 因此,它无法找到类型定义。
我刚刚删除了typeRoots,错误就消失了。