Angular 没有为外部模块提供名称

Angular 没有为外部模块提供名称,angular,angular7,Angular,Angular7,我创建了一个数据库,然后尝试将该数据库包含到另一个创建的库中。构建良好,但收到-“output.globals中未提供外部模块“my data”的名称–猜测“myData”。我错过了什么 完成重新创建的步骤 ng新测试项目--创建=应用程序=错误 cd测试项目 npm审计修复程序 ng g库我的数据 我的核心 ng g应用程序通讯簿 ng构建我的数据 然后在my-core.module中从“我的数据”添加导入{MyDataModule} 然后在my-core.module中添加导入:[MyDa

我创建了一个数据库,然后尝试将该数据库包含到另一个创建的库中。构建良好,但收到-“output.globals中未提供外部模块“my data”的名称–猜测“myData”。我错过了什么

完成重新创建的步骤

  • ng新测试项目--创建=应用程序=错误
  • cd测试项目
  • npm审计修复程序
  • ng g库我的数据
  • 我的核心
  • ng g应用程序通讯簿
  • ng构建我的数据
  • 然后在my-core.module中从“我的数据”添加导入{MyDataModule}
  • 然后在my-core.module中添加导入:[MyDataModule]
  • 建立我的核心
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 { }
  • 生成后获取“output.globals中没有为外部模块‘我的数据’提供名称–猜测‘我的数据’”

这是因为您有一个外部依赖项,需要声明使用的名称,以便汇总知道在构建
my core
的UMD捆绑包时要查找什么

要修复警告,请在
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。请参见

,了解因此错误而来这里的其他人,上面的操作似乎很乏味,或者您只是想知道是什么让您像我一样突然需要这些

在我的情况下(为了让玩笑起作用),我在tsconfig中更改了以下内容:

  "compilerOptions": {
    "module": "commonjs",
    "target": "esnext",
  "angularCompilerOptions": {
    "preserveWhitespaces": false
  }
回到:

  "compilerOptions": {
    "module": "esnext",
    "target": "es5"
}

我不知道为什么会这样,我仍然在阅读上面的回答者提供的兔子洞,我仍然在努力让jest测试和我的库都工作起来。无论如何,我希望这能帮助一些人。

Pari Baker,没有数据,您已经完成了上述步骤。我没有创建任何组件或模块,也没有向应用程序添加任何代码。如果您按照上述步骤操作,您将得到相同的.R。Richards,我只是想了解Angular 6/7中的库是如何工作的,因为我有一个Angular 5应用程序,我计划移植到Angular 7。同样,没有什么真正需要测试的,因为我没有添加任何代码,我只是运行了上面概述的步骤,得到了这个消息,并试图理解为什么。这很有效!在阅读“解析UMD模块标识符”时,我永远不会将文章与错误关联起来。谢谢你的信息。我不知道我怎么会知道这个,甚至不知道如何从角度5到角度7来寻找这个。@Tybarths,如果这个答案对你有帮助,你能把他的答案标记为所有其他读者都接受吗?