当我把Primeng添加到我的Angular 库中(它已经安装在主项目中)时,这一切都会发生,我对Primeng和Angular 感到头痛.在构建了库和主项目并运行了"ng Serve"之后,一切都运行得很好.但在保存时编译后,我得到以下错误:

./src/app/app.mode.ts-错误:模块构建失败(从./node_modules/@angular-devkit/build-angular/node_modules/@ngtools/webpack/src/ivy/index.js):

错误:未从原始/字段集(导入到.../src/main/ngfrontend/ngerp-libraries/node_modules/primeng/fieldset/fieldset.d.ts)中导出在.../ngerp-v2/src/app/utils/modules/dynamic-file-import/components/import-matching/import-matching.component.ts)中声明的符号字段集

我的库包.json

"peerDependencies": {
    "primeicons": "^4.1.0",
    "primeng": "^12.2.3"
  },
  "dependencies": {
    "@angular/animations": "~12.2.14",
    "@angular/common": "~12.2.14",
    "@angular/compiler": "~12.2.14",
    "@angular/core": "^12.2.14",
    "@angular/forms": "~12.2.14",
    "@angular/cdk": "^12.2.13",
    "@angular/platform-browser": "~12.2.14",
    "@angular/platform-browser-dynamic": "~12.2.14",
    "@angular/router": "~12.2.14",
    "angular-froala-wysiwyg": "^2.7.6",
    "froala-editor": "2.7.6",
    "intro.js": "^7.0.1",
    "rxjs": "~6.6.7",
    "tslib": "^2.0.0",
    "util": "^0.12.4",
    "zone.js": "~0.11.4"
  },
  "devDependencies": {
    "primeicons": "^4.1.0",
    "primeng": "^12.2.3",
    "@angular-devkit/build-angular": "~12.2.16",
    "@angular/cli": "~12.2.14",
    "@angular/compiler-cli": "~12.2.14",
    "@types/jasmine": "~3.8.0",
    "@types/node": "^12.11.1",
    "jasmine-core": "~3.8.0",
    "karma": "~6.3.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage": "~2.0.3",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "~1.7.0",
    "ng-packagr": "^12.1.1",
    "typescript": "~4.2"
  }
}

我的src包.json

"dependencies": {
    "@angular-eslint/builder": "^13.0.1",
    "@angular-eslint/schematics": "^13.0.1",
    "@angular-eslint/template-parser": "^13.0.1",
    "@angular/animations": "^12.2.14",
    "@angular/cdk": "^12.2.13",
    "@angular/cli": "^12.2.16",
    "@angular/common": "^12.2.14",
    "@angular/compiler": "^12.2.14",
    "@angular/core": "^12.2.14",
    "@angular/elements": "^15.2.8",
    "@angular/forms": "^12.2.14",
    "@angular/http": "^6.1.10",
    "@angular/localize": "^12.2.14",
    "@angular/material": "^12.2.13",
    "@angular/platform-browser": "^12.2.14",
    "@angular/platform-browser-dynamic": "^12.2.14",
    "@angular/router": "^12.2.14",
    "@fortawesome/angular-fontawesome": "^0.6.1",
    "@fortawesome/fontawesome-svg-core": "^1.2.27",
    "@fortawesome/free-brands-svg-icons": "^5.12.1",
    "@fortawesome/free-regular-svg-icons": "^5.12.1",
    "@fortawesome/free-solid-svg-icons": "^5.12.1",
    "@fullcalendar/core": "^5.10.1",
    "@highcharts/map-collection": "^1.1.3",
    "@ng-bootstrap/ng-bootstrap": "^4.2.2",
    "@ngtools/webpack": "12.2.13",
    "@ngx-loading-bar/core": "^5.1.2",
    "@ngx-loading-bar/http-client": "^5.1.2",
    "@ngx-translate/core": "^10.0.0",
    "@ngx-translate/http-loader": "^3.0.0",
    "@nrwl/cli": "13.7.1",
    "@stomp/stompjs": "^7.0.0",
    "@swimlane/ngx-graph": "^6.2.0",
    "@types/chart.js": "^2.9.37",
    "@typescript-eslint/eslint-plugin": "^5.6.0",
    "@typescript-eslint/parser": "^5.6.0",
    "angular-calendar": "^0.26.11",
    "angular-draggable-droppable": "^4.6.0",
    "angular-email-editor": "^0.9.0",
    "angular-froala-wysiwyg": "^2.7.6",
    "angular-gridster2": "^8.4.2",
    "angular-mention": "0.0.5",
    "angular-mentions": "^1.5.0",
    "angular-resizable-element": "^3.4.0",
    "angular-text-input-autocomplete": "^0.3.0",
    "angularx-flatpickr": "^6.6.0",
    "awesome": "0.0.7",
    "bootstrap": "^4.6.1",
    "bulma": "^0.9.4",
    "calendar-utils": "^0.2.3",
    "chart.js": "^2.9.4",
    "company-deal-lib": "file:../ngerp-libraries/dist/company-deal-lib",
    "core-js": "^2.6.12",
    "css-element-queries": "^1.2.3",
    "d3": "^5.16.0",
    "date-fns": "^1.30.1",
    "eslint": "^8.4.1",
    "file-saver": "^2.0.5",
    "file-viewer-lib": "file:node_external_dependencies/file-viewer-lib-0.0.1.tgz",
    "flatpickr": "^4.6.9",
    "font-awesome": "^4.7.0",
    "froala-editor": "2.7.6",
    "fs-extra": "^9.1.0",
    "fullcalendar": "^4.0.0-alpha.4",
    "google-libphonenumber": "^3.2.25",
    "highcharts": "^9.1.0",
    "highcharts-angular": "^2.10.0",
    "html2canvas": "^1.4.1",
    "html2pdf.js": "^0.10.1",
    "igniteui-angular-core": "^12.1.2",
    "igniteui-angular-excel": "^12.1.2",
    "igniteui-angular-spreadsheet": "^12.1.2",
    "intro.js": "^7.0.1",
    "jquery": "^3.6.0",
    "jspdf": "^2.5.1",
    "models-lib": "file:../ngerp-libraries/dist/models-lib",
    "moment": "^2.29.4",
    "moment-timezone": "^0.5.37",
    "net": "^1.0.2",
    "ng-drag-drop-list": "^3.0.0",
    "ng2-file-upload": "^1.4.0",
    "ng2-pdf-viewer": "^6.4.1",
    "ngx-embed-video": "^1.0.4",
    "ngx-image-cropper": "^3.3.5",
    "ngx-international-phone-number": "^1.0.6",
    "ngx-loading": "^8.0.0",
    "ngx-quill": "^13.0.1",
    "ngx-spinner": "^12.0.0",
    "ngx-take-until-destroy": "^5.4.0",
    "ngx-tribute": "^1.5.1",
    "node": "^12.22.7",
    "number-2-letters": "^0.5.0",
    "powerbi-client": "^2.22.3",
    "primeflex": "^1.3.1",
    "primeicons": "^4.1.0",
    "primeng": "^12.2.3",
    "quill": "^1.3.7",
    "quill-mention": "^3.1.0",
    "rrule": "^2.6.8",
    "rxjs": "^6.6.7",
    "save-as": "^0.1.8",
    "sockjs-client": "^1.6.1",
    "stomp": "^0.1.1",
    "stompjs": "^2.3.3",
    "subsink": "^1.0.2",
    "sweetalert2": "^7.33.1",
    "tributejs": "^5.1.3",
    "tslib": "^2.0.0",
    "util": "^0.12.4",
    "utils-lib": "file:../ngerp-libraries/dist/utils-lib",
    "webpack": "^5.75.0",
    "window-lib": "file:../ngerp-libraries/dist/window-lib",
    "xlsx": "^0.18.5",
    "zone.js": "~0.11.4"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^12.2.16",
    "@angular/compiler-cli": "^12.2.14",
    "@angular/language-service": "^12.2.14",
    "@types/jasmine": "~3.6.0",
    "@types/jasminewd2": "^2.0.10",
    "@types/node": "^12.20.37",
    "codelyzer": "~4.5.0",
    "config": "^3.3.6",
    "css-minimizer-webpack-plugin": "^4.0.0",
    "jasmine-core": "~3.6.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~6.3.9",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "protractor": "~7.0.0",
    "ts-node": "~5.0.1",
    "tslint": "~5.11.0",
    "typescript": "4.2"
  }

我不明白原因,有人能建议一下需要做些什么吗?

我试过官方文件了.正在将Primeng添加到对等依赖项...

推荐答案

这个问题是通过在angular.json中添加"AntiveSymlinks":true作为构建器选项来解决的.引用JoostK在this GitHub issue上的回答:

以下是当时的情况:

NPM使用符号链接将my-lib安装到应用程序的node_MODULES中,这与Yarn不创建符号链接不同.符号链接导致文件路径被解析为它们在磁盘上的实际路径,这随后会影响模块解析,因为模块请求随后从符号链接指向的目录(位于工作区根目录之外)发生.

初始构建之所以成功,是因为编译器从项目中的app.mode.ts文件解析my-dir模块,然后缓存结果.在my-lib中还有一个对my-lib的请求(乍一看,我认为这是一个错误),但在初始编译期间没有得到解决,因为它利用了app.mode.ts的缓存结果.但是,在重新构建过程中,app.mode.ts不会受到影响,因此来自my-lib内的对my-lib的请求不再利用现有缓存,而是自己解析my-lib模块.关键区别在于,它开始在my-lib/dist目录(已符号链接)内搜索my-lib,但现在祖先目录中没有包含my-lib的node_MODULES目录,因此该请求无法解析.

Angular相关问答推荐

如何从Angular TS文件传递$Events对象?

RFDC.CommonJS或AMD依赖项可能会导致优化救助ANGURAL PROCEMENT with ngx-charts lib

将输入传递到组合Angular指令

仅在展示时使用垫式步进器

Angular router-outlet 未渲染

NGX- colored颜色 Select 器安装出错

如何使用独立组件在ANGLE(16+)中实现嵌套布线

当我更新S显示的数据时,为什么我的垫表用户界面没有更新?

ANGLE v16独立组件不能与拦截器一起工作?

等待可观察性完成后再调用下一个

Angular 13 Sass 模块无法在编译中正确导入文件

如何有条件地更新 Angular 路由解析器数据?

刷新页面导致 401 错误-Angular 8

当我ng serve时,Angular CLI 提示TypeError: callbacks[i] is not a function

如何在 Angular 2 应用程序中配置不同的开发环境

Angular2 CLI 错误@angular/compiler-cli包未正确安装

Angular 4.3拦截器不起作用

angular2中的httpinterceptor类似功能是什么?

Angular2延迟加载模块错误'找不到模块'

angular2 测试,我如何模拟子组件