【发布时间】:2019-12-05 11:51:04
【问题描述】:
我对primeng和angular感到头疼,当我尝试将primeng添加到Angular的库时,这一切都会发生。
接下来是我做的步骤。
ng g library generales
然后我尝试在使用生成的库上安装primeng
npm install primeng --save
npm install primeicons --save
所以这些依赖项被添加到 package.json 作为库的依赖项,所以它很酷没有问题。
然后我想例如使用primeng表,所以我添加TableModule
到 GeneralesModule 的导入数组。
如果我尝试编译它说它需要 angular/cdk 和材料依赖项,所以我使用以下命令安装它们
npm install --save @angular/material @angular/cdk @angular/animations
我在使用primeng-table的库generales上制作我的组件,我也在exports数组上声明了这个组件,因为我想在库外使用它。
然后我转到源并将 GeneralesModule 添加到 imports 数组中,这样我就可以使用它的所有可导出组件,并在 src/app 中创建一个组件,该组件使用位于 generales 库中的组件的选择器。
好的,然后我用ng serve 启动它,它按预期工作,但如果我尝试使用ng build --prod,它会给我以下错误:
ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve '@angular/cdk/bidi' in 'C:\Users\tihom\Desktop\projects\testing\primengTesting\src\app'
ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve '@angular/cdk/platform' in 'C:\Users\tihom\Desktop\projects\testing\primengTesting\src\app'
ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve '@angular/cdk/scrolling' in 'C:\Users\tihom\Desktop\projects\testing\primengTesting\src\app'
ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve 'primeng/components/common/shared' in 'C:\Users\tihom\Desktop\projects\testing\primengTesting\src\app'
ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve 'primeng/components/dropdown/dropdown' in 'C:\Users\tihom\Desktop\projects\testing\primengTesting\src\app'
ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve 'primeng/components/paginator/paginator' in 'C:\Users\tihom\Desktop\projects\testing\primengTesting\src\app'
ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve 'primeng/components/table/table' in 'C:\Users\tihom\Desktop\projects\testing\primengTesting\src\app'
为什么会这样?为什么当它安装在 Generales 库上时,它试图在 src 上查找材料和底漆?
我尝试将primeng和material安装到src并删除了上面的错误,但给了我另一个:
ERROR in : Illegal state: Could not load the summary for directive Dir in C:/Users/tihom/Desktop/projects/testing/primengTesting/projects/generales/node_modules/@angular/cdk/bidi/typings/index.d.ts.
我的库 package.json
{
"name": "generales",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^7.2.0",
"@angular/core": "^7.2.0"
},
"dependencies": {
"@angular/animations": "^8.1.3",
"@angular/cdk": "^8.1.1",
"@angular/material": "^8.1.1",
"primeicons": "^2.0.0",
"primeng": "^8.0.2"
}
}
我的源包.json
{
"name": "primeng-testing",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/common": "~8.1.3",
"@angular/compiler": "~8.1.3",
"@angular/core": "^8.1.3",
"@angular/forms": "~8.1.3",
"@angular/platform-browser": "~8.1.3",
"@angular/platform-browser-dynamic": "~8.1.3",
"@angular/router": "~8.1.3",
"core-js": "^2.5.4",
"rxjs": "~6.5.2",
"tslib": "^1.9.0",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.801.2",
"@angular-devkit/build-ng-packagr": "~0.801.2",
"@angular/cli": "~8.1.2",
"@angular/compiler-cli": "~8.1.3",
"@angular/language-service": "~8.1.3",
"@types/node": "~8.9.4",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"codelyzer": "^5.0.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~3.1.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"ng-packagr": "^5.1.0",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tsickle": "^0.35.0",
"tslib": "^1.9.0",
"tslint": "~5.11.0",
"typescript": "~3.4.5"
},
"peerDependencies": {}
}
我希望在库的外部使用者(例如 src)上使用 primeng 功能,只需安装一次而不是多次。
【问题讨论】:
-
我很确定,但我认为您的
dependencies和peerDependencies不兼容。你能改变它们然后测试吗?
标签: angular angular-material primeng