typescript - Hvordan importere ts- og scss-filer fra en ikke-relativ bane i .net core 2.1 Angular 6-mal
Jeg har laget en ny .net core 2.1-applikasjon ved å bruke angular template, og etter det har jeg oppdatert prosjektet til å bruke Angular 6.
merk at prosjektet nesten er det samme som prosjektet som Angular CLI genererer
Prosjektet mitt vil ha mange komponenter og tjenester, så i stedet for å bruke relative stier liker jeg å kunne bruke ikke-relative stier
TypeScript
import { WeatherService } from '../../services/weather.service'
Jeg ønsket å ha muligheten til å bruke ikke-relativ sti som:
import { WeatherService } from '@app-services/weather.service'
så jeg la til
"baseUrl": ".",
"paths": {
"@app-services/*": [ "src/app/services/*" ]
},
inn i tsconfig.json
hele konfigurasjonen:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"baseUrl": ".",
"paths": {
"@app-services/*": [ "src/app/services/*" ]
},
"lib": [
"es2017",
"dom"
]
}
}
Det fungerer som forventet, jeg kan importere tjenesten i hver komponent, for eksempel:
import { WeatherService } from '@app-services/weather.service';
Men jeg får denne feilen når jeg kjører ng build:
FEIL i app/components/home/home.component.ts(3,32): feil TS2307: Kan ikke finne modulen '@app-services/weather.service'.
Hvordan løser man dette?
Merk: inne i ClientApp/src/ finnes det en annen utvidelse av tsconfig-filen, altså tsconfig.app.json, men når jeg legger til den ikke-relative stien der, fungerer importeringen rett og slett ikke, vet ikke hvorfor dette skjer også
Scss
Jeg har installert node-sass og jeg har endret alle .css-filene til å være .scss, og i tillegg har jeg lagt til
"stylePreprocessorOptions": {
"includePaths": [
"./src/common/"
]
inne i angular.json
inne i common-mappen holder jeg alle de globale scss-filene:
common
|
- _images.scss
- _colors.scss
La også dette til i samme fil:
"schematics": {
"@schematics/angular:component": {
"prefix": "app",
"styleext": "scss" // <<---
}
}
Det fungerer fint for relative stier:
@import '../../../common/_images.scss';
dessverre får jeg denne feilen:
Udeklarert variabel
når jeg importerer slik:
@import '_images';
Men.. men, det fungerer fint etter bygging
Svar #1
prøv dette:
import { WeatherService } from '~app-services/weather.service'
i stedet for dette :
import { WeatherService } from '@app-services/weather.service'
