typescript - NPM 包未在 Angular 生产应用程序中导入
问题描述
目标
我正在尝试将 rxjs 的 typescript 模块增强作为 npm 包提供,以便在 Angular 项目中使用。
问题
在 Angular 应用程序中使用包在本地开发模式下可以正常工作,但是一旦为生产而构建应用程序,包就不会被导入到最终的 dist 中。
细节
主要是提供了一种新方法:Observable.safeSubscribe()
(完整的源代码:ngx-safe-subscribe.ts)import { Observable, Subscription } from 'rxjs'; declare module 'rxjs/internal/Observable' { interface Observable<T> { safeSubscribe: typeof safeSubscribe; } } export function safeSubscribe<T>(...): Subscription { ... } Observable.prototype.safeSubscribe = safeSubscribe;
该软件包是使用ng-packagr 构建的
导入并在 Angular 项目中使用后,一切正常:(
此处的完整演示:demo)import { Component, OnDestroy } from '@angular/core'; import { of } from 'rxjs'; import '@badisi/ngx-safe-subscribe'; @Component({ selector: 'my-app', templateUrl: './app.component.html' }) export class AppComponent implements OnDestroy { constructor() { of([]).safeSubscribe(this, () => { console.log('ok'); }); } ngOnDestroy(): void {} }
一旦为生产而构建,包就不会导入到最终的 dist 中:
ng serve --prod [error in console]: TypeError: Object(...)(...).safeSubscribe is not a function
我最后的尝试是用最新的东西做的
angular@7.0.0, typescript@3.1.3, ng-packagr@4.4.0
附带说明一下,在 Visual Studio Code 中使用命名的导入样式会产生以下结果:
import { safeSubscribe } from '@badisi/ngx-safe-subscribe'; [ts] 'safeSubscribe' is declared but its value is never read.
很难判断问题是否来自 typescript、angular-cli、webpack 甚至 ng-packagr 无法识别扩充并将其正确导入最终 dist。
所以任何帮助将非常非常感激!
谢谢。
解决方案
您是在尝试 ng serve --prod 还是 ng build --prod?
推荐阅读
- c# - 你如何在 C# 中显示/隐藏听写工具栏
- python - NoReverseMatch at / Reverse for 'post_detail' with keyword arguments '{'pk': ''}' not found
- php - 无法使用 po 文件进行翻译
- r - 来自 ggplot2 中并排的 2 个单独 data.frames 的相同变量
- spring - 如何在 Spring Boot 中收听流式 API?
- python - 为 matplotlib 安装 GUI 后端的最简单方法?
- rust - 我如何使用带有函数 append_path 的 zh tar rust 包
- html - 如何使用相同的类但不同的 div 更改 CSS 中的正方形大小?
- javascript - 模拟 Javascript AWS.RDS.Signer
- kotlin - Kotlin 内联函数只有一个 return 语句