自从 Visual Studio 2017 刚刚推出以来,我想我会回答我是如何解决这个问题的,因为使用“skeleton-typescript-aspnetcore”时仍然有很多错误。
以https://github.com/aurelia/skeleton-navigation/releases/tag/1.1.2 为起点,运行以下步骤:
当您第一次运行项目时,您会收到错误消息,抱怨位于 /test/ 中的某些文件不在“rootDir”下。在您的 tsconfig.json 中,rootDir 被定义为“src/”,这可以通过将测试文件夹移动到 src 文件夹中来解决。这将导致新的错误,因为这些文件中定义的路径现在已更改。您将需要像这样编辑应用程序、子路由器和用户导入:
import {Users} from '../../users'; IntelliSense 应该可以帮到你。
命令gulp test在更改为新路径之前也不会运行,您可以在karma.conf.js中更改路径:
files: [
'src/test/unit/setup.ts',
'src/test/unit/*.ts'
],
接下来文件 users.ts 将抛出类似Type 'Response' is not assignable to type 'any[]' 的错误。你需要像这样告诉 TypeScript 你要声明什么:public users : Object = []; 或简单地说:public users = {};
最后一个问题是你会有很多重复的标识符错误,在撰写本文时,原因似乎是 TypeScript 版本 2.2.1 带来的变化。我不知道具体是什么问题,但我知道以前的版本 2.1.5 仍然有效。所以你需要做的是在你的 src/skeleton 目录中运行npm install typescript@2.1.5 --save,--save 只是为了更新你的 package.json 文件,如果你愿意,你以后也可以自己做。
完成后,您的 gulp 错误(其中 20 个)应该得到解决。但是仍然存在一些由重复签名引起的错误。同样,TypeScript 2.0+ 中的情况发生了变化,现在有一种获取和使用声明文件的简化方法。以下是关于如何使用 @types 功能的 SO 答案:How should I use @types with TypeScript 2,但为了保持简短和甜蜜,您必须转到 tsconfig.json 文件并明确告知在哪里可以找到 @types/node 文件夹。它看起来像这样:
"compilerOptions": {
...
"typeRoots": [
"node_modules/@types"
],
"types": [ "node" ]
...
},
希望这会有所帮助,通过这些更改,项目现在应该可以正确构建和启动了。
编辑:
我最近在构建我的项目时再次遇到了一些问题。我又得到了很多重复的标识符......但是我在 SO 上遇到了这个答案:TypeScript throws multiple duplicate identifiers
显然 TypeScript 最新附带了开箱即用的获取定义,因此我能够从链接中的答案运行命令:
npm uninstall @types/whatwg-fetch
从 typescript 2.1.5 升级到最新版本:
npm install typescript --save
您甚至可能希望通过附加 -g 来全局安装 typescript。
此外,这将继续成为一个问题,除非您从 typings.json globalDependencies 注释掉/删除 url 和 whatwg-fetch 以防止它重新创建自己:
"globalDependencies": {
//"url": "github:aurelia/fetch-client/doc/url.d.ts#bbe0777ef710d889a05759a65fa2c9c3865fc618",
//"whatwg-fetch": "registry:dt/whatwg-fetch#0.0.0+20160524142046"
}
然后您可以删除typings 文件夹,再次运行typings install 或编辑typings 文件夹中的index.d.ts 并删除whatwg-fetch 和url 的引用路径。
希望这可以帮助那些即使在“修复”它之后也可能遇到同样问题的人。