ec2 构建框中的 Ng 构建问题,但在本地没有

Posted

技术标签:

【中文标题】ec2 构建框中的 Ng 构建问题,但在本地没有【英文标题】:Ng build issues in ec2 build box but not in local 【发布时间】:2021-05-18 14:50:38 【问题描述】:

我在我的 EC2 构建框中收到以下错误,但在我的本地无法复制该错误

node_modules/rxjs-compat/add/observable/dom/webSocket.d.ts(1,46) 中的错误:错误 TS2307:找不到模块“rxjs/websocket”。

在本地我试过

    构建

    ng 构建 --configuration=feature

    ng 构建 --prod

    dependencies: "@angular/animations": "^7.2.3", "@angular/cdk": "^6.4.7", "@angular/common": "^6.1.9", "@angular/compiler": "^6.1.9", "@angular/core": "^6.1.9", "@angular/flex-layout": "^6.0.0-beta.17", "@angular/forms": "^6.1.9", "@angular/http": "^6.1.9", "@angular/material": "6.4.7", "@angular/platform-browser": "^6.1.9", "@angular/platform-browser-dynamic": "^6.1.9", "@angular/router": "^6.1.9", "@briebug/jest-schematic": "^2.2.0", "@material-ui/core": "^4.9.13", "@ng-bootstrap/ng-bootstrap": "^3.3.1", "@tinymce/tinymce-angular": "3.5.0", "@types/prismjs": "^1.9.0", "ag-grid-angular": "^20.0.0", "ag-grid-community": "^20.0.0", "ajv": "^6.5.5", "angular-mentions": "^0.9.0", "angular-tag-cloud-module": "^3.8.1", "angular2-notifications": "^2.0.0", "bootstrap": "^4.4.1", "bootstrap-icons": "^1.0.0-alpha3", "chart.js": "^2.7.3", "classlist.js": "^1.1.20150312", "codelyzer": "^4.5.0", "core-js": "^2.5.7", "csurf": "^1.11.0", "express": "^4.16.3", "highcharts": "8.2.2", "highcharts-angular": "2.8.2", "jquery": "^3.5.1", "js-yaml": "^3.13.1", "lodash": "^4.17.10", "ng-bootstrap": "^1.6.3", "ng-multiselect-dropdown": "0.2.5", "ngx-cookie-service": "^2.2.0", "ngx-daterangepicker-material": "2.1.11", "ngx-infinite-scroll": "^6.0.0", "ngx-markdown": "^6.2.1", "ngx-owl-carousel": "^2.0.7", "ngx-pagination": "^5.0.0", "ngx-spinner": "^7.0.0", "ngx-toggle-switch": "^2.0.5", "owl.carousel": "^2.3.4", "popper.js": "^1.16.1", "rxjs": "6.3.3", "rxjs-compat": "6.3.3", "swagger-ui-dist": "3.25.2", "tinymce": "5.2.0", "tslint": "^5.11.0", "web-animations-js": "^2.3.1", "zone.js": "^0.8.26"

“开发依赖”: "@angular-devkit/build-angular": "0.13.0", "@angular/cli": "^6.2.9", "@angular/compiler-cli": "^6.1.9", "@types/google.analytics": "0.0.39", "@types/jasmine": "2.5.38", "@types/jest": "最新的", "@types/node": "~6.0.60", “茉莉花核”:“~2.5.2”, "jasmine-spec-reporter": "~3.2.0", “笑话”:“最新”, “开玩笑预设角度”:“最新”, “笑话声纳报告者”:“^2.0.0”, “业力-cli”:“〜1.0.1”, “更漂亮”:“1.16.4”, "量角器": "^5.3.2", “声纳扫描仪”:“^3.1.0”, “声纳扫描仪”:“^2.8.0”, "ts-node": "~2.0.0", “打字稿”:“~2.9.2”

我不确定这是如何导致的以及如何在本地复制相同的内容以进行更好的调试。 请分享你的想法

【问题讨论】:

【参考方案1】:

检查您的依赖项和 devDependencies 之间的区别。您的开发依赖项是仅出于开发目的而安装在本地的依赖项,而您的依赖项是与生产构建一起使用的依赖项。

其中一个修复方法是使用 --save 标志安装 rxjs,即, npm install rxjs rxjs-compat --save

这里提到了另一个:https://github.com/stbui/angular-material-app/issues/39

【讨论】:

我试过这个,它开始给出不同的错误。 node_modules/rxjs-compat/add/observable/dom/webSocket.d.ts(1,46) 中的错误:错误 TS2307:找不到模块“rxjs/websocket”。从 package.json 更新了我的依赖项。只是想知道如何在我的本地复制这些问题 删除节点模块并还原 package.json 并交换其中的依赖项和 dev 依赖项,然后重做 npm install。是的,还有一件事,请检查您生产环境中的节点版本。您的生产 infa 可能使用的是旧版本的 nodejs 和 npm,而不是您的本地系统。 感谢您的建议。但不幸的是,结果并不好。我尝试在本地交换开发和依赖项。它是建造的。此外,npm 和 nodejs 版本在本地和开发版本中都是相同的 那么恐怕我们无法调试它,但根据目前提供的信息,我只能得出一件事,那就是问题出在生产环境而不是代码上.因为它在您的本地机器上使用相同版本的节点和所有东西,但只有产品部署有错误。

以上是关于ec2 构建框中的 Ng 构建问题,但在本地没有的主要内容,如果未能解决你的问题,请参考以下文章

Spark SQL 'explode' 命令在 AWS EC2 上失败,但在本地成功

ng build --configuration 生产在 Jenkins 上需要 30 多分钟,但在本地需要 5-6 分钟

由于 NDK 版本不兼容,Android 构建在 CI 中失败,但在本地不兼容

构建 Angular 8 项目时出现空白页面,但使用“ng serve”可以完美运行

我的 Flutter web 在本地构建得很好,但在 firebase 托管中不起作用

WiX 构建在 TFS 中失败但在本地工作