Я новичок в Angular и работаю над старым проектом компании. Он был сделан с помощью Angular 7, и теперь мне нужно перенести его на 18. Проблема в том, что в нынешнем виде он даже не запускается. Я запускал npm install
и npm start
, но получаю эти ошибки и даже не знаю, с чего начать гуглить. Надеялся, что смогу получить некоторые рекомендации о том, как подойти к этому вопросу.
//npm install
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile
npm WARN deprecated [email protected]: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated [email protected]: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated [email protected]: We have news to share - Protractor is deprecated and will reach end-of-life by Summer 2023. To learn more and find out about other options please refer to this post on the Angular blog. Thank you for using and contributing to Protractor. https://goo.gle/state-of-e2e-in-angular
changed 68 packages, and audited 1123 packages in 26s
140 vulnerabilities (2 low, 46 moderate, 70 high, 22 critical)
To address issues that do not require attention, run:
npm audit fix
To address all issues (including breaking changes), run:
npm audit fix --force
Run `npm audit` for details.
> [email protected] start
> ng serve
(node:26680) [DEP0111] DeprecationWarning: Access to process.binding('http_parser') is deprecated.
(Use `node --trace-deprecation ...` to show where the warning was created)
** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
10% building 4/5 modules 1 active ...t\index.js?http://0.0.0.0:0/sockjs-nodenode:internal/crypto/hash:69
this[kHandle] = new _Hash(algorithm, xofLen);
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:69:19)
at Object.createHash (node:crypto:133:10)
at module.exports (C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\webpack\lib\util\createHash.js:90:53)
at NormalModule._initBuildHash (C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\webpack\lib\NormalModule.js:401:16)
at C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\webpack\lib\NormalModule.js:433:10
at C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\webpack\lib\NormalModule.js:308:13
at C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\loader-runner\lib\LoaderRunner.js:367:11
at C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\loader-runner\lib\LoaderRunner.js:203:19
at VirtualFileSystemDecorator.readFile (C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\@ngtools\webpack\src\virtual_file_system_decorator.js:43:13)
at processResource (C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\loader-runner\lib\LoaderRunner.js:202:11)
at iteratePitchingLoaders (C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\loader-runner\lib\LoaderRunner.js:158:10)
at runLoaders (C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\loader-runner\lib\LoaderRunner.js:365:2)
at NormalModule.doBuild (C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\webpack\lib\NormalModule.js:280:3)
at NormalModule.build (C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\webpack\lib\NormalModule.js:427:15)
at Compilation.buildModule (C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\webpack\lib\Compilation.js:635:10)
at C:\Users\USER\Documents\Angular\GolCentz\GolCentz Clone\node_modules\webpack\lib\Compilation.js:884:14 {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
Node.js v18.19.1
{
"name": "gol-centz-app",
"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/animations": "^7.2.15",
"@angular/common": "~7.2.0",
"@angular/compiler": "~7.2.0",
"@angular/core": "~7.2.0",
"@angular/forms": "~7.2.0",
"@angular/platform-browser": "~7.2.0",
"@angular/platform-browser-dynamic": "~7.2.0",
"@angular/router": "~7.2.0",
"admin-lte": "^3.0.0-alpha.2",
"bootstrap": "^4.3.1",
"core-js": "^2.5.4",
"devextreme": "19.1.3",
"devextreme-angular": "^19.1.3",
"devextreme-intl": "^19.1.5",
"jquery": "^3.4.1",
"jszip": "^3.2.1",
"ngx-toastr": "^10.0.4",
"rxjs": "~6.3.3",
"tslib": "^1.9.0",
"zone.js": "~0.8.26"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.13.0",
"@angular/cli": "~7.3.8",
"@angular/compiler-cli": "~7.2.0",
"@angular/language-service": "~7.2.0",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.5.0",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.0.0",
"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",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.2.2"
}
}
Сначала я попробовал запустить npm Audit fix --force, как он предлагал, но потом это просто привело к большему количеству ошибок, которых я даже не смог найти в Интернете, и мне пришлось снова клонировать исходный код, чтобы все переделать, потому что я этого не сделал. Я не использую контроль версий в первый раз.
Удалите файл json.lock и каталог node_modules и повторите попытку.
Как дополнение: от 7 до 18 это долгий путь, если проект простой, перепишите его в 18 новый. Потому что у вас много нового и передового опыта.
ошибка, которую вы получаете, не имеет ничего общего с вашими зависимостями, а связана с неправильной версией узла. вы можете найти хорошее объяснение здесь: https://stackoverflow.com/a/69699772/2126544
angular v7 — довольно старая версия, поэтому, чтобы запустить ее, вам следует сначала понизить версию узла с 18 до 8 или 10 (https://v7.angular.io/guide/quickstart#nodejs ), потому что там вероятно, используются API, которые больше не поддерживаются в версии 18. если вы еще его не используете, я бы рекомендовал использовать менеджер версий узлов ( https://github.com/nvm-sh/nvm или https://github.com/coreybutler/nvm-windows). благодаря этому вы можете легко переключаться между версиями.
после этого вы сможете запустить свое приложение, а затем обновить версию за версией. вам также придется менять версии своих узлов на этом этапе, пока вы не достигнете последней версии.
Отвечает ли это на ваш вопрос? Сообщение об ошибке «ошибка: 0308010C: процедуры цифрового конверта:: не поддерживается»