无法找到名称为 'PropertyKey' 的变量

19

我正在尝试在一个项目中运行Webpack,但是我遇到了多个错误

node_modules/@types/core-js/index.d.ts
error TS2304: Cannot find name 'PropertyKey'.
...
node_modules/@types/core-js/index.d.ts
error TS2339: Property 'for' does not exist on type 'SymbolConstructor'.

我应该已经安装了所有需要的打字,所以我不确定这些是从哪里来的。我尝试复制一个可以编译的项目中的package.json文件,但没有帮助。我缺少什么?

我的tsconfig文件看起来像这样

{
  "compilerOptions": {
    "target": "es5",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "sourceMap": true,
    "noImplicitAny": false,
    "suppressImplicitAnyIndexErrors": true
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "**/*.spec.ts"
  ]
}
6个回答

38

我在0.9.35版本的@types/core-js中遇到了同样类型的错误。

可能是其他问题...

编辑

上周存储库发生了一些更改。您可以通过以下链接阅读GitHub上的问题并查看更改:

https://github.com/DefinitelyTyped/DefinitelyTyped/issues/15104

https://github.com/DefinitelyTyped/DefinitelyTyped/pull/15108/commits/f2c5c990e448550fcebec071c25e6a1e5766dde7

我的解决方案是在我的tsconfig文件的compilerOptions对象中将

"lib": ["es5", "dom"] 改为 "lib": ["es6", "dom"]

这样做,我使错误消失了,而不需要降级到0.9.35。

注意:您不需要更改目标(我的目标仍然是es5)。


它对我有效。然而,我有两台电脑都运行着最新更新和软件包的VS2015专业版,其中一台电脑存在问题,可以通过这个答案解决,而另一台则不需要。有点奇怪。 - ZZZ
也许你没有在正确的地方查找tsconfig文件?或者你使用了更新版本的类型,而另一个人使用的是旧版本。 - Jackie
2
转换为ES6不会破坏IE 11的操作吗?换句话说,ES6对浏览器兼容性有什么影响? - Brandon
2
只要目标仍然是ES5,你的代码应该能够在IE中运行。 - ZZZ

8

对于我来说,答案是...


"compilerOptions": {
  ...
  "lib": [
    "es2016",
    "dom"
  ]
},

5

将您的@types/core-js版本降级至0.9.35。

我刚刚升级到0.9.37后遇到了同样的问题。


我将版本降级到0.9.36,现在它可以工作了。谢谢 :D - Lievno

2
我通过在tsconfig.json中添加以下代码解决了我的问题:

{ "compilerOptions": {

"experimentalDecorators": true,
"moduleResolution": "node",
  "lib": ["es2017", "dom"] //Please add this code in your tsconfig.json

}, "排除": [ "node_modules" ] }

该代码段是一个JSON格式的配置文件,其中"exclude"表示要排除的文件或目录列表。在这里,它指定了要排除的“node_modules”目录。

2

我将"@types/core-js"降级到"^0.9.35"并将其添加到我的编译器选项中。

"devDependencies": {
    "@types/core-js": "^0.9.35",
    ......
}

tsconfig.json

{
"compilerOptions": {
    ........
    "lib": [
        "es2016",
        "dom"
    ]
},
"exclude": [
    "node_modules",
    ...
]
}

在添加了"@types/core-js": "^0.9.35"之后,您需要运行npm命令吗?例如npm update或其他命令吗? 这对我仍然没有起作用。 - Sam
我使用这个链接移除了“npm_modules”文件夹,然后再次运行了命令“npm install”。 - Akshay

2

我可以确认加载版本0.9.35已经为我解决了这个问题。

"devDependencies": {
    ...
    "@types/core-js": "0.9.35",
    ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接