Ang*_*gle 21 angular ng-packagr
使用ng-packagr打包一个项目@ my / common-util时,没有问题。此类在abstract-person.ts中包含一个名为AbstractPerson的抽象类。
在另一个名为@ my / common-impl的项目中,创建了另一个Person类,该类扩展了AbstractPerson并使用@ my / common-util包名称将其导入。当我使用ng-packagr打包时,出现以下错误->
在options.globals中没有为外部模块'@ my / common / abstract-person'提供名称-猜测'abstractPerson'
似乎这是一个警告,我继续npm将@ my / common和@ my / common-impl都安装到另一个项目中,但是当我从@ my / common-impl导入Person类时遇到以下错误
./node_modules/@my/common-impl/esm5/common-impl.js中的错误未找到模块:错误:无法解析“ C:\ Data \ me \”中的“ @ my / common / abst ract-person” node_modules \ @my \ common-impl \ e sm5'在'C:\ Data \ me \ node_modules \ @my \ common-impl \ esm5'中解析'@ my / common / abstract-person'解析的请求是使用描述的模块文件:C:\ Data \ me \ node_modules \ @my \ co mmon-impl \ package.json(相对路径:./esm5)使用描述文件后,字段“浏览器”不包含有效的别名配置:C:\ Data \ me \ node_modules \ @my \ common-impl \ package.json(相对路径:./ esm5)解析为模块
我在package.json中尝试了多种方法,例如外部函数,全局变量,umdModuleIds(请参阅下文),但是这些都不起作用。
这是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"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
要纠正此问题还需要什么?
ngf*_*ixl 23
我正在使用一个名为katex的npm模块。添加此向umdModuleIds
在./projects/myLibname/ng-package.json为我工作。
{
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../dist/documentations",
"lib": {
"entryFile": "src/public_api.ts",
"umdModuleIds": {
"katex": "katex"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这使得以下警告消失了
在output.globals中未提供外部模块“ katex”的名称-猜测“ katex”
小智 3
tsconfig.lib.json
您应该在库中使用“paths”属性。
这就是问题所在:
我将library1和library2添加到我的monorepo
项目文件夹中。
project:
-> library1
-> tsconfig.lib.json
-> ...
-> library2
-> tsconfig.lib.json
-> ...
-> tsconfig.json
-> ...
Run Code Online (Sandbox Code Playgroud)
tsconfig.json
{
...
"compilerOptions": {
...
"paths": {
"library1": [
"../dist/library1"
],
"library2": [
"../dist/library2"
],
},
}
Run Code Online (Sandbox Code Playgroud)
我import {lib1Module} from 'library1'
在library2代码中使用了。为了解决no module lib1Module found
错误,我将library1路径放在library2中tsconfig.lib.json
tsconfig.lib.json
{
"extends": "../../tsconfig.json",
"compilerOptions": {
...
"paths": {
"library1": [
"../../../dist/library1"
]
},
...
},
Run Code Online (Sandbox Code Playgroud)
paths
如果您使用属性而不是“umdModuleIds”、“globals”和“externals”,您的问题可能会得到解决
ng-packagr
最后我应该提到这个事实,模式中不再存在“外部” 。
归档时间: |
|
查看次数: |
10751 次 |
最近记录: |