You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular v6项目安装bcryptjs后启动崩溃,求兼容安装方案

问题描述

我在Angular v6版本的项目中安装了bcryptjs,安装操作成功完成,但执行ng serve启动开发环境时项目崩溃。目前只有使用旧的node_modules才能正常运行项目。项目会在部署新变更后进行升级,请问有没有办法在不破坏现有node_modules的前提下安装新包?

附上我的package.json文件:

{
"name": "@coreui/coreui-free-angular-admin-template",
"version": "2.0.0-beta.5",
"description": "CoreUI Free Angular 2+ Admin Template",
"author": {
"name": "Łukasz Holeczek",
"url": "http://holeczek.pl",
"github": "https://github.com/mrholek",
"twitter": "https://twitter.com/lukaszholeczek"
},
"contributors": [
{
  "name": "Andrzej Kopański",
  "url": "https://github.com/xidedix"
 }
],
"homepage": "https://coreui.io/angular",
"copyright": "Copyright 2018 creativeLabs Łukasz Holeczek",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build --prod",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "^6.1.10",
"@angular/common": "6.0.2",
"@angular/compiler": "6.0.2",
"@angular/core": "6.0.2",
"@angular/forms": "6.0.2",
"@angular/http": "6.0.2",
"@angular/platform-browser": "6.0.2",
"@angular/platform-browser-dynamic": "6.0.2",
"@angular/router": "6.0.2",
"@coreui/angular": "^2.13.1",
"@coreui/coreui": "^2.1.16",
"@coreui/coreui-plugin-chartjs-custom-tooltips": "^1.3.1",
"@coreui/icons": "^0.1.1",
"@ng-bootstrap/ng-bootstrap": "^2.2.2",
"@ngx-loading-bar/core": "^2.0.0",
"@ngx-loading-bar/http": "^2.0.0",
"@ngx-loading-bar/http-client": "^2.0.0",
"@ngx-loading-bar/router": "^2.0.0",
"@ngx-translate/core": "^10.0.2",
"@ngx-translate/http-loader": "^3.0.1",
"@types/googlemaps": "^3.43.3",
"@types/moment": "^2.13.0",
"ag-grid-angular": "^23.0.3",
"ag-grid-community": "^23.2.1",
"angular-gtag": "^1.0.3",
"angular-highcharts": "^10.0.1",
"angular-material-fileupload": "0.0.11",
"angular2-cookie": "^1.2.6",
"angular2-spinner": "^1.0.10",
"bcryptjs": "^2.4.3",
"chart.js": "2.7.2",
"chartjs-plugin-datalabels": "^0.4.0",
"core-js": "2.5.6",
"crypto-js": "^3.1.9-1",
"file-saver": "^2.0.2",
"flag-icon-css": "3.0.0",
"font-awesome": "^4.7.0",
"hammerjs": "^2.0.8",
"highcharts": "^6.2.0",
"moment": "^2.29.3",
"mutationobserver-shim": "^0.3.2",
"ng-image-slider": "^1.3.7",
"ng2-charts": "1.6.0",
"ngx-bootstrap": "2.0.5",
"ngx-custom-validators": "^8.0.0",
"ngx-perfect-scrollbar": "6.0.0",
"ngx-select-dropdown": "^0.4.1",
"ngx-toastr": "^8.7.3",
"rxjs": "6.1.0",
"rxjs-compat": "6.1.0",
"simple-line-icons": "^2.4.1",
"ts-helpers": "1.1.2",
"xlsx": "^0.15.3",
"zone.js": "0.8.26"
},
"devDependencies": {
"@angular-devkit/build-angular": "^0.6.8",
"@angular/cli": "^6.0.8",
"@angular/compiler-cli": "6.0.2",
"@angular/language-service": "6.0.2",
"@types/crypto-js": "^3.1.47",
"@types/jasmine": "2.8.7",
"@types/jasminewd2": "2.0.3",
"@types/node": "10.1.0",
"codelyzer": "4.3.0",
"jasmine-core": "3.1.0",
"jasmine-spec-reporter": "4.2.1",
"karma": "2.0.2",
"karma-chrome-launcher": "2.2.0",
"karma-coverage-istanbul-reporter": "1.4.2",
"karma-jasmine": "1.1.2",
"karma-jasmine-html-reporter": "1.1.0",
"protractor": "5.3.2",
"ts-node": "6.0.3",
"tslint": "5.10.0",
"typescript": "2.7.2"
},
"engines": {
"node": ">= 8.9.4",
"npm": ">= 5.6.0"
}
}
解决方案

方法1:手动复制依赖包(临时稳妥方案)

  • 先备份当前正常的node_modules文件夹,重命名为node_modules_backup
  • 执行npm install bcryptjs --no-save,该命令会将bcryptjs安装到当前node_modules但不会修改package.json
  • 找到安装后的node_modules/bcryptjs文件夹,复制到node_modules_backup目录下
  • 删除当前的node_modules,将node_modules_backup改回node_modules
  • 此方法既保留原有稳定依赖,又添加了bcryptjs,package.json中已有的bcryptjs依赖可保留,待项目升级后再正常安装

方法2:忽略peer依赖冲突安装

你的Angular v6版本较旧,安装bcryptjs时可能触发了依赖树更新,导致其他包版本不兼容。可尝试:

  • 备份node_modules和package-lock.json文件
  • 执行npm install bcryptjs --legacy-peer-deps,该参数会忽略peer依赖冲突,避免修改已安装的其他包
  • 执行ng serve测试,如果项目正常运行则保留;若仍崩溃,恢复备份的文件即可

方法3:隔离环境安装后复制

  • 创建临时文件夹并初始化npm项目:mkdir temp-bcrypt && cd temp-bcrypt && npm init -y
  • 在临时项目中安装对应版本的bcryptjs:npm install bcryptjs@2.4.3
  • 将临时项目node_modules中的bcryptjs文件夹复制到原项目的node_modules中
  • 确保原项目package.json已添加bcryptjs依赖(你已完成此操作),后续项目升级时可正常处理依赖

额外排查建议

执行ng serve时查看终端错误日志,通常崩溃是因为特定依赖版本不兼容。比如安装bcryptjs时npm自动更新了@types/node或其他工具包,导致与Angular v6冲突。若能定位到冲突包,可在package.json中锁定该包版本,再重新安装。

内容的提问来源于stack exchange,提问作者Hammad Ahmed Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:15:02