Vue+Laravel项目执行npm run prod遇openssl初始化错误求解决
修复Node.js 17+下npm run prod的ERR_OSSL_EVP_UNSUPPORTED错误
方法1:调整package.json的scripts命令
检查你的scripts中prod命令的参数位置,必须把--openssl-legacy-provider加到node启动命令前,而非直接附加在mix命令后。根据Laravel Mix的常见配置,修改后的scripts示例如下:
"scripts": { "dev": "node --openssl-legacy-provider node_modules/webpack/bin/webpack.js --mode development --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "prod": "node --openssl-legacy-provider node_modules/webpack/bin/webpack.js --mode production --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "watch": "node --openssl-legacy-provider node_modules/webpack/bin/webpack.js --mode development --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" }
如果你的prod命令原本是调用mix脚本(如"prod": "mix production"),则修改为:
"prod": "node --openssl-legacy-provider node_modules/.bin/mix production"
方法2:通过环境变量临时指定参数
执行prod命令前先设置环境变量,不同系统写法不同:
- Windows(CMD):
set NODE_OPTIONS=--openssl-legacy-provider && npm run prod
- Windows(PowerShell):
$env:NODE_OPTIONS="--openssl-legacy-provider"; npm run prod
- Linux/macOS:
NODE_OPTIONS=--openssl-legacy-provider npm run prod
方法3:降级Node.js版本
若不想修改配置,可直接降级到Node.js 16.x LTS版本,该版本默认使用OpenSSL 1.1.1,不存在此兼容问题。
内容的提问来源于stack exchange,提问作者Shibbir
相关产品推荐
相关产品推荐

