angular - Hur man importerar modul från icke-relativa sökvägar i Visual Studio 2015
Jag arbetar på ett Angular 4-projekt med Gulp i Visual Studio 2015. Jag fick Visual Studio 2015 QuickStart härifrån.
- tsc version: 2.5.2
Min projektstruktur:
src
└──angular
└──common
└──models
└──items.ts
└──ui
└──components
└──items.component.ts
items.ts
export module items {
export const listOfItems = [1,2,3];
}
Jag vill använda icke-relativ sökväg när jag importerar allt inom min src-mapp, dvs:
items.component.ts
import { items } from 'items';
Detta är min tsconfig.json-fil (som ligger på samma nivå som src):
{
"compileOnSave": false,
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [ "es2015", "dom" ],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true,
"typeRoots": [
"node_modules/@types/"
]
}
}
Jag har försökt att lägga till detta i compilerOptions:
"baseUrl": "." //it doesn't help.
efter det:
"baseUrl": ".",
"paths": {
"*": [
"*",
"src/angular/*" // still nothing.
]
}
Jag lade också till rootDirs men jag får fortfarande detta fel:
Can't find module 'items'
Svar #1
Först, se till att du har installerat TypeScript för Visual Studio 2015 - v2.5.2, efter det:
tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"@models/*": [ "angular/common/models/*" ]
}
//..
}
}
användning:
import { items } from '@models/items';
Så, vad händer här:
* pekar på det faktiska namnet på vår fil, så i vårt fall, efter @models, finns det * som pekar på items, och items finns någonstans inuti angular/common/models/*.
Vi bör också lägga till detta i systemjs.config.js så att sökvägen kan lösas:
System.config({
paths: {
// paths serve as alias
'npm:': 'node_modules/',
"@models/*": ["rootDist/angular/common/models/*"]
^
where you keep your files, for example dist/
}
// other things..
});
Och en annan viktig sak här är att starta om Visual Studio
Jag har också försökt avlasta/ladda om projektet, men det hjälper inte.
