Jetbrains WebStorm 给出警告:对装饰器的实验性支持是一个可能会发生变化的特性
Jetbrains WebStorm gives warning: Experimental support for decorators is a feature that is subject to change
我已经针对这个警告搜索了一段时间,在我的 tsconfig 文件中设置 experimentalDecorators 似乎并没有消除警告。我在 Angular 的 Ionic 项目中工作。而我使用的 IDE 是 JetBrains 的 webstorm。如果您需要更多信息,请询问。
我的 tsconfig.json 文件:
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"declaration": false,
"experimentalDecorators": true,
"allowJs": true,
"emitDecoratorMetadata": true,
"lib": [
"dom",
"es2015"
],
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5",
"noUnusedLocals": false,
"noUnusedParameters": false
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules",
"src/**/*.spec.ts",
"src/**/__tests__/*.ts"
],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}
}
我完全忘记了我有一个空文件 tsconfig.spec.json。将我的配置从 tsconfig.json 粘贴到 tsconfig.spec.json 文件中解决了这个问题。显然 WebStorm 寻找最近的 tsconfig.*.json 配置文件,对我来说它是 tsconfig.spec.json 而不是 tsconfig.json 文件。
@Tijl 的回答被低估了。然而,它需要一些详细说明
我遇到了类似的错误。
TS1192: Module '"fs"' has no default export.
和
TS1259: Module '"path"' can only be default-imported using the 'allowSyntheticDefaultImports' flag
使用时
import fs from "fs";
import path from "path";
在 vite.config.ts
文件中
将 allowSyntheticDefaultImports
添加到 tsconfig.json
没有产生任何结果(配置文件混淆)
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
},
"references": [
{
"path": "./tsconfig.node.json"
}
]
}
然后我找到了问题所有者的答案并添加了对 tsconfig.node.ts
的修复
{
"compilerOptions": {
"composite": true,
"module": "esnext",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true // Add it here instead
},
"include": [
"vite.config.ts"
]
}
这个解决方案有效的原因可以用 Whosebug 的另一个主题来解释:
引用:
You need two different TS configs because the project is using two different environments in which the TypeScript code is executed:
- Your app (src folder) is targeting (will be running) inside the browser
- Vite itself including it's config is running on your computer inside Node, which is totally different environment (compared with browser) with different API's and constraints
所以基本上对于 vite 特定的配置文件,你必须使用节点环境的 tsconfig
。或者至少这是一个对我来说最有意义的解释,所以如果错了请纠正我:)
我已经针对这个警告搜索了一段时间,在我的 tsconfig 文件中设置 experimentalDecorators 似乎并没有消除警告。我在 Angular 的 Ionic 项目中工作。而我使用的 IDE 是 JetBrains 的 webstorm。如果您需要更多信息,请询问。
我的 tsconfig.json 文件:
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"declaration": false,
"experimentalDecorators": true,
"allowJs": true,
"emitDecoratorMetadata": true,
"lib": [
"dom",
"es2015"
],
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5",
"noUnusedLocals": false,
"noUnusedParameters": false
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules",
"src/**/*.spec.ts",
"src/**/__tests__/*.ts"
],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}
}
我完全忘记了我有一个空文件 tsconfig.spec.json。将我的配置从 tsconfig.json 粘贴到 tsconfig.spec.json 文件中解决了这个问题。显然 WebStorm 寻找最近的 tsconfig.*.json 配置文件,对我来说它是 tsconfig.spec.json 而不是 tsconfig.json 文件。
@Tijl 的回答被低估了。然而,它需要一些详细说明
我遇到了类似的错误。
TS1192: Module '"fs"' has no default export.
和
TS1259: Module '"path"' can only be default-imported using the 'allowSyntheticDefaultImports' flag
使用时
import fs from "fs";
import path from "path";
在 vite.config.ts
文件中
将 allowSyntheticDefaultImports
添加到 tsconfig.json
没有产生任何结果(配置文件混淆)
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
},
"references": [
{
"path": "./tsconfig.node.json"
}
]
}
然后我找到了问题所有者的答案并添加了对 tsconfig.node.ts
{
"compilerOptions": {
"composite": true,
"module": "esnext",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true // Add it here instead
},
"include": [
"vite.config.ts"
]
}
这个解决方案有效的原因可以用 Whosebug 的另一个主题来解释:
引用:
You need two different TS configs because the project is using two different environments in which the TypeScript code is executed:
- Your app (src folder) is targeting (will be running) inside the browser
- Vite itself including it's config is running on your computer inside Node, which is totally different environment (compared with browser) with different API's and constraints
所以基本上对于 vite 特定的配置文件,你必须使用节点环境的 tsconfig
。或者至少这是一个对我来说最有意义的解释,所以如果错了请纠正我:)