由于 Visual Studio 2017 刚刚推出,我想我应该回答一下我是如何解决这个问题的,因为使用“sculpture-typescript-aspnetcore”时仍然存在很多错误。
Using https://github.com/aurelia/sculpture-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 仍然有效。所以你需要做的就是运行npm install [email protected] --save
在你的 src/sculpture 目录中, --save 只是为了更新你的 package.json 文件,如果你愿意,你也可以稍后自己执行此操作。
完成此操作后,您的 gulp 错误(其中 20 个)应该得到解决。但仍然存在一些由于重复签名而导致的错误。同样,TypeScript 2.0+ 中的情况发生了变化,现在有一种获取和使用声明文件的简化方法。这是关于如何使用 @types 功能的答案:我应该如何在 TypeScript 2 中使用 @types,但为了保持简短和甜蜜,您必须转到 tsconfig.json 文件并明确告诉在哪里可以找到 @types/node 文件夹。它看起来像这样:
"compilerOptions": {
...
"typeRoots": [
"node_modules/@types"
],
"types": [ "node" ]
...
},
希望这会有所帮助,通过这些更改,项目现在应该可以正确构建和启动。
EDIT:最近,我在构建项目时再次遇到了一些问题。我再次收到很多重复的标识符...但是我在 SO 上遇到了这个答案:TypeScript 抛出多个重复的标识符
显然 TypeScript 最新版本附带了开箱即用的获取定义,因此我能够从链接中的答案运行该命令:
npm uninstall @types/whatwg-fetch
并从 typescript 2.1.5 升级到最新版本:
npm install typescript --save
您甚至可能想通过附加来全局安装打字稿-g
。
此外,除非您注释掉/删除 url 和 Whatwg-fetch from,否则这将继续成为一个问题typings.json
globalDependency 以防止其重新创建自身:
"globalDependencies": {
//"url": "github:aurelia/fetch-client/doc/url.d.ts#bbe0777ef710d889a05759a65fa2c9c3865fc618",
//"whatwg-fetch": "registry:dt/whatwg-fetch#0.0.0+20160524142046"
}
然后你可以删除打字文件夹,运行typings install
再次或编辑typings文件夹中的index.d.ts并删除whatwg-fetch和url的引用路径。
希望这可以帮助那些即使在“修复”之后也可能遇到相同问题的人。