我试图包括一个在新应用程序中构建的库。它构建成功,但是在运行时main.ts:13 Error: inject() must be called from an injection context
上出现错误。
当我使用npm i devicewise-angular
从npm抓取库时,没有问题。一切正常。
使用该库生成的测试应用程序也可以使用本地库。
我已将路径添加到我的tsconfig.json
文件中。
{
...
"compilerOptions": {
...
"paths": {
"devicewise-angular": [
"../devicewise-angular/dist/devicewise-angular"
]
}
}
...
}
最肯定可以找到该库,并且可以正常运行。 VSCode intellisense会自动完成所有操作。
这是错误
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安装时相同的结果。为什么在尝试使用这种静态注入错误时会出现此错误?
答案 0 :(得分:0)
请谨慎对待此类黑客,因为这不是节点依赖性的工作方式。
可以使用依赖管理器(npm或yarn)linking
在本地“模拟”库。
在本地库及其npm link
(... / dist / devicewise-angular)所在的文件夹中运行package.json
,您将可以在角度项目中运行npm link devicewise-angular
,并且它将使用您的本地副本而不是正式副本。
请参考official documentation以了解其详细信息。
编码愉快!