首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ng-packagr给出外部模块没有提供名称

ng-packagr给出外部模块没有提供名称
EN

Stack Overflow用户
提问于 2018-02-05 05:18:43
回答 3查看 23.5K关注 0票数 29

当使用ng-packagr打包一个项目@my/common时,没有问题。这个类包含抽象-Person.ts中名为AbstractPerson的抽象类。

在另一个名为@my/common的项目中,创建了另一个Person类,它扩展AbstractPerson并使用@my/common包名导入它。当我使用ng-packagr打包它时,我会得到以下错误->

在options.globals -猜测'abstractPerson‘中没有为外部模块“@my/公用/抽象-person”提供名称

由于这似乎是一个警告,我继续在另一个项目中安装@my/ Person和@my/Person impl,但是当我从@my/Person impl导入Person类时,会得到以下错误

找不到./node_modules/@my/common-impl/esm5/common-impl.js模块中的错误:'C:\Data\me\node_modules\@my\common-impl\esm5‘解析请求中的错误:无法解析C:\Data\ me\node_sm5\@my\e sm5’sm5‘@my/公用/抽象-person’中的“@my/ Parsed /abstract-person”是使用描述文件C:\Data\sm5的模块mmon(相对路径:./esm5 5)字段‘me\node_modules\@my\co’在使用描述文件后不包含有效的别名配置:me\node_modules\@my\co(相对路径:./esm5 5)解析为模块

我尝试过一些东西,比如外部、全局、umdModuleIds in package.json (见下文),但这些都没有用。

这是package.json

代码语言:javascript
复制
{
  "name": "@my/common-impl",
  "version": "1.0.0-alpha.0",
  "private": true,
  "dependencies": {
    "@my/common": "1.0.0-alpha.0"
  },
  "peerDependencies": {
    "lodash": "^4.17.4"
  },
  "ngPackage": {
    "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
    "dest": "dist/common-impl",
    "workingDirectory": "../.ng_build",
    "lib": {
      "entryFile": "src/public_api.ts",
      "externals": [
        "@my/common/abstract-person" 
      ],
      "globals": {
        "@my/common/abstract-person": "AbstractPerson"
      },
      "umdModuleIds": {
        "abstract-person" : "AbstractPerson"

      }
    }
  }
}

这一问题还需要进一步纠正吗?

EN

回答 3

Stack Overflow用户

发布于 2018-11-28 14:05:09

我和一个名为katex的npm模块一起工作。将这个添加到./projects/myLibname/ng-package.json中的umdModuleIds中对我有用。

代码语言:javascript
复制
{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/documentations",
  "lib": {
    "entryFile": "src/public_api.ts",
    "umdModuleIds": {
      "katex": "katex"
    }
  }
}

这使得以下警告消失。

在output.globals中没有提供外部模块'katex‘的名称-猜测'katex’

票数 45
EN

Stack Overflow用户

发布于 2018-05-12 07:29:14

您应该在库中使用tsconfig.lib.json的“路径”属性。

这就是问题所在:

我将library1和library2添加到library2项目文件夹中。

代码语言:javascript
复制
project:
   -> library1 
       -> tsconfig.lib.json
       -> ...
   -> library2 
       -> tsconfig.lib.json
       -> ...
   -> tsconfig.json 
   -> ...

tsconfig.json

代码语言:javascript
复制
{
  ...
  "compilerOptions": {
    ...
    "paths": {
      "library1": [
      "../dist/library1"
    ],
      "library2": [
      "../dist/library2"
    ],
  },
}

我在import {lib1Module} from 'library1'代码中使用了library2。解决no module lib1Module found错误的I类library1路径在library2 tsconfig.lib.json中的实现

tsconfig.lib.json

代码语言:javascript
复制
{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    ...
    "paths": {
      "library1": [
      "../../../dist/library1"
    ]
  },
  ...
},

如果您使用paths属性而不是"umdModuleIds“、”全局“和”外部“,则可能会解决问题。

最后,我应该提到这样一个事实:“外部”在 schema中不再存在。

票数 3
EN

Stack Overflow用户

发布于 2020-02-11 14:52:05

在我的案例中,我用这种方式解决了警告。

ng-package.json

代码语言:javascript
复制
{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/test-lib",
  "lib": {
    "entryFile": "src/public-api.ts",
    "umdModuleIds": {
      "@libs/shared": "../../dist/shared",
      "@libs/animations": "../../dist/animations",
      "saturn-datepicker": "saturn-datepicker",
      "moment": "moment"
    }
  }
}

tsconfig.json

代码语言:javascript
复制
{
  "compileOnSave": false,
  "compilerOptions": {
    "importHelpers": true,
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "esnext",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "es2019",
      "dom"
    ],
    "allowSyntheticDefaultImports": true,
    "baseUrl": "./",
    "paths": {
      "@app/*": [ "projects/test-app/src/app/*" ],
      "@libs/*": [ "dist/*" ],
      "shared": [ "dist/shared" ],
      "shared/*": [ "dist/shared/*" ],
      "animations": [ "dist/animations" ],
      "animations/*": [ "dist/animations/*" ],
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48616267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档