ng-packagr nie nadaje nazwy zewnętrznemu modułowi


Nie ma problemu podczas używania ng-packagr do pakowania pojedynczego projektu @ my/common-util. Ta klasa zawiera klasę abstrakcyjną o nazwie AbstractPerson w pliku abstract-person.ts.
Inny projekt o nazwie @ my/common-impl utworzył kolejną klasę Person, która rozszerza AbstractPerson i importuje ją przy użyciu nazwy pakietu @ my/common-util. Kiedy używam ng-packagr do spakowania go, pojawia się następujący błąd - & >
Nazwa modułu zewnętrznego „@ my/common/abstract-person” w options.globals - zgadywanie „abstractPerson” nie zostało określone
Ponieważ wydawało się to ostrzeżeniem, nadal instaluję npm zarówno @ my/common, jak i @ my/common-impl w innym projekcie, ale pojawia się następujący błąd podczas importowania klasy Person z @ my/common-impl

BŁĄD w ./ folderze node_modules/module@my/common-impl/esm5/common-impl.js not
znaleziono: błąd: nie można rozwiązać problemu „@ moja/wspólna/abst atrakcja twarzą w
Uprawnienie 'C: \ Data \ me \ node_modules \ @my \ common-impl \ e sm5'
„@ my/common/abstract-person w
Parsowane żądanie 'C: \ Data \ me \ node_modules \ @my \ common-impl \ esm5' to
moduł przy użyciu pliku opisu: C: \ Data \ me \ node_modules \ @my \ co
mmon-impl \ package.json (ścieżka względna: ./esm5) pole „przeglądarka”
nie zawiera poprawnej konfiguracji aliasu po użyciu opisu
file: C: \ Data \ me \ node_modules \ @my \ common-impl \ package.json (względne
ścieżka: ./esm5) zezwalaj jako moduł

Próbowałem kilku rzeczy, takich jak external, globals, umdModuleIds w package.json (patrz poniżej), ale żadna z nich nie zadziałała.
Oto plik package.json
{
"name": "@my/common-impl",
"version": "1.0.0-alpha.0",
"private": true,
"dependencies": {
"@my/common": "1.0.0-alpha.0"
},
"peerDependencies": {
"lodash": "^4.17.4"
},
"ngPackage": {
"$schema": "./node_modules/ng-packagr/ng-package.schema.json",
"dest": "dist/common-impl",
"workingDirectory": "../.ng_build",
"lib": {
"entryFile": "src/public_api.ts",
"externals": [
"@my/common/abstract-person"
],
"globals": {
"@my/common/abstract-person": "AbstractPerson"
},
"umdModuleIds": {
"abstract-person" : "AbstractPerson" }
}
}
}

Co jeszcze jest potrzebne, aby to naprawić?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Pracowałem z modułem npm o nazwie

katex
... Dodanie tego do
umdModuleIds
w

./projects/myLibname/ng-package.json

pracował dla mnie.
<pre class="lang-json prettyprint-override">
{
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../dist/documentations",
"lib": {
"entryFile": "src/public_api.ts",
"umdModuleIds": {
"katex": "katex"
}
}
}

Spowodowało to zniknięcie następującego ostrzeżenia

Dla zewnętrznego modułu 'katex' nie podano nazwy w output.globals - zgadywanie 'katex'
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz użyć właściwości „path” z
tsconfig.lib.json
w swojej bibliotece.
Tutaj jest problem:
Dodaję swoją bibliotekę 1 i bibliotekę 2 do

teczka
https://hackernoon.com/one-vs- ... fe469
projekt
monorepo
.
project:
-> library1
-> tsconfig.lib.json
-> ...
-> library2
-> tsconfig.lib.json
-> ...
-> tsconfig.json
-> ...

tsconfig.json
{
...
"compilerOptions": {
...
"paths": {
"library1": [
"../dist/library1"
],
"library2": [
"../dist/library2"
],
},
}

I użyłem
import {lib1Module} z 'library1'
w kodzie biblioteki2.
aby rozwiązać błąd
nie znaleziono modułu lib1Module
i oververide library1 path to library2
tsconfig.lib.json
tsconfig.lib.json
{
"extends": "../../tsconfig.json",
"compilerOptions": {
...
"paths": {
"library1": [
"../../../dist/library1"
]
},
...
},

Twój problem prawdopodobnie zostanie rozwiązany, jeśli użyjesz właściwości
path
zamiast „umdModuleIds”, „globals” i „externals”
Na koniec muszę wspomnieć o tym fakcie: „zewnętrzne” już nie istnieją w

schemat
https://github.com/dherges/ng- ... .json
ng-packagr
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


W moim przypadku rozwiązałem ostrzeżenia w ten sposób.


Ng-package.json
>
{
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../dist/test-lib",
"lib": {
"entryFile": "src/public-api.ts",
"umdModuleIds": {
"@libs/shared": "../../dist/shared",
"@libs/animations": "../../dist/animations",
"saturn-datepicker": "saturn-datepicker",
"moment": "moment"
}
}
}


tsconfig.json
>
{
"compileOnSave": false,
"compilerOptions": {
"importHelpers": true,
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "esnext",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2018",
"es2019",
"dom"
],
"allowSyntheticDefaultImports": true,
"baseUrl": "./",
"paths": {
"@app/*": [ "projects/test-app/src/app/*" ],
"@libs/*": [ "dist/*" ],
"shared": [ "dist/shared" ],
"shared/*": [ "dist/shared/*" ],
"animations": [ "dist/animations" ],
"animations/*": [ "dist/animations/*" ],
}
}
}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się