我在Visual Studio 2017中构建应用程序时遇到问题。我正在使用ASP.NET CORE 2和Angular 6.运行应用程序后,我从node_modules文件output_ast.d.ts收到错误:
(TS)在'const'enum声明中,成员初始值设定项必须是常量 表达
和
构建:在'const'enum声明中,成员初始值设定项必须是常量表达式。
错误代码:
export declare const enum JSDocTagName {
Desc = "desc",
Id = "id",
Meaning = "meaning",
}
我的package.json
"name": "client-app",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "^6.0.0",
"@angular/common": "^6.0.0",
"@angular/compiler": "^6.0.0",
"@angular/core": "^6.0.0",
"@angular/forms": "^6.0.0",
"@angular/http": "^6.0.0",
"@angular/platform-browser": "^6.0.0",
"@angular/platform-browser-dynamic": "^6.0.0",
"@angular/router": "^6.0.0",
"core-js": "^2.5.4",
"rxjs": "^6.0.0",
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular/compiler-cli": "^6.0.0",
"@angular-devkit/build-angular": "~0.6.1",
"typescript": "~2.7.2",
"@angular/cli": "~6.0.1",
"@angular/language-service": "^6.0.0",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.2.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~1.7.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~1.4.2",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.3.0",
"ts-node": "~5.0.1",
"tslint": "~5.9.1"
}
}
应用程序类似于本文https://www.codeproject.com/Articles/1245243/How-to-Create-an-App-with-Angular-and-ASP-NET-C 但角度应用程序位于名为ClientApp的分隔文件夹中。 我尝试了不同版本的ts和角度cli,没有任何帮助。我该怎么办这个错误?
答案 0 :(得分:5)
在Visual Studio中,检查项目属性 - > TypeScript构建部分中的设置,并确保将TypeScript版本设置为"使用最新可用的"或者至少是最近的事情。我怀疑它当前设置为TypeScript支持的字符串枚举之前的东西。
答案 1 :(得分:1)
我经历了完全相同的行为,并且似乎是TS版本的不兼容问题。而不是将TypeScript版本更改为"使用最新的"如上所述,我能够通过将TypeScript版本更改为2.2来解决。
答案 2 :(得分:0)
要获得字符串枚举,您只需执行以下操作
export enum JSDocTagName {
Desc = "desc",
Id = "id",
Meaning = "meaning",
}
答案 3 :(得分:0)
tldr;升级Visual Studio使用的TypeScript编译器。
当引入枚举的字符串初始化程序:https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-4.html时,Visual Studio 2017可能正尝试使用比2.4更旧的TypeScript构建项目。
这里需要了解3种不同的TypeScript编译器:
要升级VS使用的TypeScript编译器,请转到https://marketplace.visualstudio.com并搜索最新的TypeScript扩展名。安装它,重新启动Visual Studio,然后在“项目”设置中确保将TypeScript构建版本设置为该新版本。现在,如果您进行重建,该错误应该会消失。
答案 4 :(得分:0)
@ben-barreth 建议的答案对我来说似乎也是如此。 VS Code 的 tsc 似乎是 <2 版本。但不是升级 vscode 插件,更方便的方法是使用带有显式路径的 npm 包 tsc ./node_modules/.bin/tsc。
$ ./node_modules/.bin/tsc --version
Version 4.3.2
$ tsc --version
message TS6029: Version 1.5.3