没有提供外部模块的名称

时间:2019-03-24 17:12:56

标签: angular angular7

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

完成重新创建的步骤。

  • ng新的测试项目--create = application = false
  • cd测试项目
  • npm审核修复程序
  • ng g库我的数据
  • ng g库我的核心
  • ng g应用程序地址簿
  • ng建立我的数据
  • 然后在my-core.module中从'my-data'添加import {MyDataModule};
  • 然后在my-core.module中添加导入:[MyDataModule]
  • ng构建我的核心

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-data'的名称–猜测'myData'”

2 个答案:

答案 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"
}

我不知道为什么会这样,仍然通过上面回答者提供的兔子洞进行阅读,并且我仍在尝试使笑话测试正常工作并建立我的库。无论如何,我希望这对某人有帮助。