CesiumJS项目执行npm run server报_HASH函数不支持错误求助
解决CesiumJS项目运行
npm run server时的ERR_OSSL_EVP_UNSUPPORTED错误 错误原因
这个ERR_OSSL_EVP_UNSUPPORTED错误,是因为Node.js v17及以上版本默认启用了严格的OpenSSL算法规范,而项目依赖的旧版webpack使用了不被支持的哈希算法(比如MD4),导致加密哈希函数初始化失败。
解决方案(按易操作程度排序)
方案1:临时修改启动命令(最快生效)
直接在项目的package.json中修改server命令,添加Node.js兼容参数:
- Mac/Linux 或 Windows Git Bash:
"scripts": { "server": "NODE_OPTIONS=--openssl-legacy-provider npm run start" // 如果原命令是直接调用webpack-dev-server,改成: // "server": "NODE_OPTIONS=--openssl-legacy-provider webpack-dev-server" } - Windows CMD:
"scripts": { "server": "set NODE_OPTIONS=--openssl-legacy-provider && npm run start" } - Windows PowerShell:
"scripts": { "server": "$env:NODE_OPTIONS='--openssl-legacy-provider'; npm run start" }
修改后重新执行npm run server即可。
方案2:降级Node.js到稳定版(长期兼容)
Node.js v16.x是长期支持(LTS)版本,对旧项目兼容性更好:
- 卸载当前安装的Node.js v19.7.0
- 安装nvm(Node版本管理器),用来轻松切换Node版本
- 打开终端执行:
# 安装v16.20.0(LTS版本) nvm install 16.20.0 # 切换到该版本 nvm use 16.20.0 - 进入项目目录,删除
node_modules文件夹和package-lock.json文件 - 重新安装依赖:
npm install - 执行
npm run server启动项目
方案3:升级webpack版本(根治问题,需注意兼容性)
如果项目允许升级依赖,可以把webpack升到5.x版本(该版本适配Node.js v17+的算法规范):
- 查看当前webpack版本:
npm list webpack - 执行命令升级核心依赖:
npm install webpack@latest webpack-cli@latest webpack-dev-server@latest --save-dev - 升级后检查webpack配置文件,确保CesiumJS相关的loader、插件适配新版本(比如Cesium的
CesiumWebpackPlugin如果版本旧,也需要同步升级)
额外提示(针对CesiumJS项目)
- 如果是官方Cesium示例项目,建议先查看项目README里的版本要求,确保Node.js和依赖版本匹配
- 每次修改依赖后,记得删除
node_modules和package-lock.json再重新安装,避免缓存导致的异常
内容的提问来源于stack exchange,提问作者KAVAN THAKKAR
相关产品推荐
相关产品推荐

