当使用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
{
"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"
}
}
}
}这一问题还需要进一步纠正吗?
发布于 2018-11-28 14:05:09
我和一个名为katex的npm模块一起工作。将这个添加到./projects/myLibname/ng-package.json中的umdModuleIds中对我有用。
{
"$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’
发布于 2018-05-12 07:29:14
您应该在库中使用tsconfig.lib.json的“路径”属性。
这就是问题所在:
我将library1和library2添加到library2项目文件夹中。
project:
-> library1
-> tsconfig.lib.json
-> ...
-> library2
-> tsconfig.lib.json
-> ...
-> tsconfig.json
-> ...tsconfig.json
{
...
"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
{
"extends": "../../tsconfig.json",
"compilerOptions": {
...
"paths": {
"library1": [
"../../../dist/library1"
]
},
...
},如果您使用paths属性而不是"umdModuleIds“、”全局“和”外部“,则可能会解决问题。
最后,我应该提到这样一个事实:“外部”在 schema中不再存在。
发布于 2020-02-11 14:52:05
在我的案例中,我用这种方式解决了警告。
ng-package.json
{
"$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
{
"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/*" ],
}
}
}https://stackoverflow.com/questions/48616267
复制相似问题