#angular #typescript
#угловой #машинописный текст
Вопрос:
Я только начал создавать свою собственную библиотеку для Angular. Сначала я добавил сервис; Я могу создать библиотеку без проблем.
Однако для этой службы я переместил константу в файл с именем tokens.ts, на который теперь ссылается служба. J
Теперь сборка завершается ошибкой со следующим сообщением:
------------------------------------------------------------------------------ Building entry point 'mylib' ------------------------------------------------------------------------------ √ Compiling with Angular sources in Ivy partial compilation mode. × Generating FESM2020 'SOME_VALUE' is not exported by distmylibesm2020libtokens.mjs, imported by distmylibesm2020libservicesmysuperservice.service.mjs Process finished with exit code 1
Жетоны.ts:
export declare const SOME_VALUE: ...
Упомянутая услуга:
import {SOME_VALUE} from "../tokens"; @Injectable({ providedIn: 'root', }) export class MySuperService{ //...
Мой tsconfig.lib.json:
{ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/lib", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [] }, "exclude": [ "src/test.ts", "**/*.spec.ts" ] }
Мой tsconfig.json:
{ "compileOnSave": false, "compilerOptions": { "baseUrl": "./", "paths": { "common": [ "dist/mylib/mylib", "dist/mylib" ] }, "outDir": "./dist/out-tsc", "forceConsistentCasingInFileNames": true, "strict": true, "noImplicitOverride": true, "noPropertyAccessFromIndexSignature": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, "sourceMap": true, "declaration": false, "downlevelIteration": true, "experimentalDecorators": true, "moduleResolution": "node", "importHelpers": true, "target": "es2017", "module": "es2020", "lib": [ "es2020", "dom" ] }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, "strictInjectionParameters": true, "strictInputAccessModifiers": true, "strictTemplates": true } }
My public-api.ts:
export * from './lib/tokens'; export * from './lib/mylib/mysuperservice.service'; export * from './lib/mylib.module';
Мой проект-дерево:
Я мог бы предположить, что это как-то связано с моими опциями компилятора TS, так как в сообщении об ошибке упоминаются файлы .mjs. Однако я понятия не имею, где может быть проблема.
Вы можете мне с этим помочь?
Комментарии:
1. можете ли вы отобразить структуру библиотеки и public-api.ts?
2. Конечно! Я скорректировал свой пост. По соображениям соответствия требованиям компании я переименовал некоторые должности, но последовательно и соответствующим образом.
3. Может быть, вы на самом деле объявляете тип вместо значения?
export declare const SOME_VALUE: 'MyToken'
должно бытьexport declare const SOME_VALUE = 'MyToken'
?
Ответ №1:
Как упоминал @jboot, проблема действительно заключалась в том, что я объявлял тип, а не конкретный экземпляр.
Правильный путь:
export const SOME_VALUE= new InjectionTokenlt;SomeTypegt;('some description');
Спасибо за это!