我创建了一个数据库,然后尝试将该数据库包含到另一个创建的库中。构建良好,但收到-“未在output.globals中为外部模块'my-data'提供名称-猜测'myData'”。我想念什么?
完成重新创建的步骤。
my-core.module.ts
import { NgModule } from '@angular/core';
import { MyCoreComponent } from './my-core.component';
import { MyDataModule } from 'my-data';
@NgModule({
declarations: [MyCoreComponent],
imports: [MyDataModule],
exports: [MyCoreComponent]
})
export class MyCoreModule { }
答案 0 :(得分:4)
这是由于您具有外部依赖性而导致的,您需要声明所使用的名称,以使汇总知道构建my-core
的UMD捆绑包时要查找的内容。
要解决该警告,请在my-data
中声明您的ng-package.json
{
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../dist/my-core",
"lib": {
"entryFile": "src/public-api.ts",
"umdModuleIds": {
"my-data": "my-data"
}
}
}
我相信这是因为由于所有依赖项都被视为外部依赖项,并且my-data
并未通过npm之类的东西来安装,因此您需要声明所期望的UMD模块ID。参见https://github.com/ng-packagr/ng-packagr/blob/master/docs/dependencies.md#resolving-umd-module-identifiers
答案 1 :(得分:1)
对于任何其他因此错误而来这里的人,上面的内容似乎很乏味,或者您只是想知道自己做了什么更改,以使您突然需要像我这样的人。
就我而言(为了使工作更有趣),我在tsconfig中更改了以下内容:
"compilerOptions": {
"module": "commonjs",
"target": "esnext",
"angularCompilerOptions": {
"preserveWhitespaces": false
}
返回至:
"compilerOptions": {
"module": "esnext",
"target": "es5"
}
我不知道为什么会这样,仍然通过上面回答者提供的兔子洞进行阅读,并且我仍在尝试使笑话测试正常工作并建立我的库。无论如何,我希望这对某人有帮助。