typescript - Hur man importerar ts- och scss-filer från icke-relativ väg i .net core 2.1 Angular 6-mall


Jag har skapat en ny .net core 2.1-applikation med angular-mallar, och efter det har jag uppdaterat projektet för att använda Angular 6.

observera att projektet är nästan samma som det projekt som Angular CLI genererar

Mitt projekt kommer att ha många komponenter och tjänster, så istället för att använda relativa sökvägar gillar jag att kunna använda icke-relativa sökvägar

TypeScript

import { WeatherService } from '../../services/weather.service'

Jag ville ha möjligheten att använda icke-relativ sökväg som:

import { WeatherService } from '@app-services/weather.service'

så jag lade till

"baseUrl": ".",
    "paths": {
      "@app-services/*": [ "src/app/services/*" ]
    },

till tsconfig.json

hela konfigurationen:

{
  "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 fungerar som förväntat, jag kan importera tjänsten i varje komponent, till exempel:

import { WeatherService } from '@app-services/weather.service';

Men jag får detta fel när jag kör ng build:

FEL i app/components/home/home.component.ts(3,32): fel TS2307: Kan inte hitta modulen '@app-services/weather.service'.

Hur löser man detta?

Observera: inuti ClientApp/src/ finns det en annan utökning av tsconfig-filen, dvs tsconfig.app.json, men när jag lägger till den icke-relativa vägen där fungerar importeringen helt enkelt inte, vet inte varför detta också händer

Scss

Jag har installerat node-sass och jag har ändrat alla .css-filer till .scss, och förutom det lade jag till

"stylePreprocessorOptions": {
              "includePaths": [ 
                "./src/common/"
              ]

inuti angular.json

inne i common-mappen håller jag alla globala scss-filer:

common
 |
  - _images.scss
  - _colors.scss

Lade även till detta i samma fil:

"schematics": {
    "@schematics/angular:component": {
      "prefix": "app",
      "styleext": "scss" // <<---
    }
  }

Det fungerar bra för relativa sökvägar:

@import '../../../common/_images.scss';

tyvärr får jag detta fel:

Odeklarerad variabel

när jag importerar på det här sättet:

@import '_images'; 

Men.. men, det fungerar bra efter byggandet

Svar #1

prova detta:

  import { WeatherService } from '~app-services/weather.service'

istället för detta:

import { WeatherService } from '@app-services/weather.service'

Relaterade artiklar