在开发全栈应用过程中,我遭遇了一个与node.JS的 openssl处理方式变更相关的错误。该错误源于应用依赖项使用了node.js捆绑的当前openssl版本不再支持的加密算法或功能。 网上搜索后,我了解到这是因为node.js对openssl的处理方式发生了变化,导致加密操作受影响。
我的初步尝试是删除node_modules文件夹并重新运行npm install,但这未能解决问题。
深入研究后,我意识到需要将已弃用的算法切换到旧模式以保证兼容性。这使我想起了大学里学习过的SHA-1哈希算法,由于安全问题,它已被弃用。
由于我的应用并非关键应用,且需要一定的向后兼容性,我决定暂时使用–openssl-legacy-provider标志作为权宜之计。这有助于我深入了解错误原因、解决方案以及相关术语。
–openssl-legacy-provider标志指示Node.js使用OpenSSL的旧版提供程序,从而恢复对旧版算法的支持。
我的解决步骤如下:
-
在终端执行:
npm update npm audit fix --force
-
修改package.json文件中的scripts部分:
之前:
"scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }
之后:
"scripts": { "start": "react-scripts --openssl-legacy-provider start", "build": "react-scripts --openssl-legacy-provider build", "test": "react-scripts test", "eject": "react-scripts eject" }
通过以上步骤,问题最终得到解决。 这个过程让我学习了npm的详细功能、版本管理、已弃用和遗留算法等知识。