在 Node.js v18 上运行旧的 Angular 8 项目时出错

问题描述 投票:0回答:1

我最近从 GitHub 下载了一个旧的 Angular 8 项目并尝试在本地运行它。运行 npm install 安装所需的依赖项后,我尝试使用 ngserve 启动项目。但是,我遇到了以下错误消息:

C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient>ng serve
10% building 3/3 modules 0 activei 「wds」: Project is running at http://localhost:4200/webpack-dev-server/
i 「wds」: webpack output is served from /
i 「wds」: 404s will fallback to //index.html
10% building 3/4 modules 1 active ...pack-dev-server\client\index.js?http://0.0.0.0:0/sockjs-node&sockPath=/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\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\webpack\lib\util\createHash.js:135:53)
    at NormalModule._initBuildHash (C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\webpack\lib\NormalModule.js:412:16)
    at C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\webpack\lib\NormalModule.js:444:10
    at C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\webpack\lib\NormalModule.js:320:13
    at C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\loader-runner\lib\LoaderRunner.js:367:11
    at C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\loader-runner\lib\LoaderRunner.js:203:19
    at VirtualFileSystemDecorator.readFile (C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\@ngtools\webpack\src\virtual_file_system_decorator.js:46:13)
    at processResource (C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\loader-runner\lib\LoaderRunner.js:202:11)
    at iteratePitchingLoaders (C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\loader-runner\lib\LoaderRunner.js:158:10)
    at runLoaders (C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\loader-runner\lib\LoaderRunner.js:365:2)
    at NormalModule.doBuild (C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\webpack\lib\NormalModule.js:292:3)
    at NormalModule.build (C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\webpack\lib\NormalModule.js:438:15)
    at Compilation.buildModule (C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\webpack\lib\Compilation.js:702:10)
    at C:\Users\Fozle Rabbi\Desktop\Folder GIt\AngularFuelSensor\FuelSensorClient\node_modules\webpack\lib\Compilation.js:944:14 {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Node.js v18.20.3

它似乎与 Node.js 中的密码学库有关(ERR_OSSL_EVP_UNSUPPORTED)。我目前使用的是 Node.js v18.20.3。我怀疑该项目与此版本的 Node.js 不兼容,因为它是使用 Angular 8 构建的,而 Angular 8 可能使用旧版本的 Webpack 或其他库。

我采取的步骤:

  1. 从 GitHub 下载项目。
  2. 运行 npm install。
  3. 尝试使用 ngserve 运行项目。

我的问题:

  • 有没有办法在仍然使用 Node.js v18 的同时解决此错误?
  • 或者,我应该将 Node.js 降级到早期版本以匹配 Angular 8 项目的兼容性吗?如果是这样,哪个版本效果最好?

如有任何指导,我们将不胜感激!

node.js angular
1个回答
3
投票

Angular 8 不支持 NodeJS v18,请参阅兼容性表。您需要安装 NodeJS ^10.9.0 才能运行 Angular 8 项目。

提供更多背景信息:根据 Angular 的 docs,Angular 支持主要版本 18 个月。 Angular v8 早在 2019 年就发布了,并且已经超出了支持范围。有了这个政策,他们就无法确保旧的 Angular 版本与新的 NodeJS 版本的兼容性。

© www.soinside.com 2019 - 2024. All rights reserved.