angular - 在新的/单独的应用程序中本地使用 Angular 库
问题描述
我正在尝试包含我在新应用程序中构建的库。它构建成功,但运行时出现错误main.ts:13 Error: inject() must be called from an injection context
。
当我使用 npm 从 npm 获取库时,npm i devicewise-angular
没有问题。一切运行良好。
使用该库生成的测试应用程序也可以很好地使用本地库。
我已将路径添加到我的tsconfig.json
文件中。
{
...
"compilerOptions": {
...
"paths": {
"devicewise-angular": [
"../devicewise-angular/dist/devicewise-angular"
]
}
}
...
}
该库绝对可以找到并且构建良好。VSCode 智能感知会自动完成一切。
这是错误
main.ts:13 Error: inject() must be called from an injection context
at injectInjectorOnly (core.js:520)
at ɵɵinject (core.js:536)
at DevicewiseAngularService_Factory (devicewise-angular.js:984)
at _callFactory (core.js:23211)
at _createProviderInstance (core.js:23154)
at resolveNgModuleDep (core.js:23113)
at NgModuleRef_.get (core.js:24206)
at resolveDep (core.js:24736)
at createClass (core.js:24584)
at createDirectiveInstance (core.js:24400)
看着devicewise-angular.js:984
我看到:
/** @nocollapse */ DevicewiseAngularService.ngInjectableDef = ɵɵdefineInjectable({ factory: function DevicewiseAngularService_Factory() { return new DevicewiseAngularService(ɵɵinject(CookieService), ɵɵinject(DevicewiseApiService), ɵɵinject(DevicewiseSubscribeService), ɵɵinject(DevicewiseMultisubscribeService)); }, token: DevicewiseAngularService, providedIn: "root" });
我希望使用本地版本的库得到相同的结果,就像我使用 npm 安装它一样。为什么我在尝试这样使用它时会收到这个静态注入错误?
解决方案
小心这种黑客攻击,因为这不是节点依赖的工作方式。
linking
可以使用依赖管理器(npm 或 yarn)在本地“模拟”一个库。在带有本地库(.../dist/devicewise-angular)的文件夹中
运行,您将能够在您的角度项目中运行,它将使用您的本地副本而不是官方副本。npm link
package.json
npm link devicewise-angular
详细请参考官方文档。
快乐编码!
推荐阅读
- java - java TimerTask example
- python-3.x - 如何在 Python 中发送编码的快速修复消息?
- python - 无法在 docker mysql 容器中安装 mysqlclient
- c++ - 如何在 C++ 和 Delphi 中定义字符串数组
- python - 使用格式化将python字符串转换为json
- java - 我的代码出现错误:不兼容的类型:int 无法转换为布尔行:6
- javascript - 如何以角度传递component.ts文件中复选框的选中和未选中值?
- mysql - 此查询中的错误是什么。帮助赞赏
- c++ - SSE 加法比 + 运算符慢
- r - 自动化功能评估 - R