node升级之后出现了什么问题?
- Error loading
tslibhelper library.( Package subpath './package.json' is not defined by "exports" in ) - Error: error:0308010C:digital envelope routines::unsupported
由于同事在开发组件的时候出现以上报错,我本地未出现过这个问题,经过对比是node环境出现问题,我的版本v16.14.0,他人nodev18.12.1,看到这个就是一句卧槽,还能不能好好玩耍了!!!
如何解决!
经过调研和不断的测试,终于解决了,哈哈!!!(摸鱼,开玩笑。。。。)
1.先解决第一个问题点,从字面意思看就是tslib 这个包出现了错误,在我node16版本上其实出现了exports package ./警告的文案,这个肯定是有关联的,查看了自己的依赖包rollup-plugin-typescript2 这个包使用了tslib 这个工具方法,那就去rollup-plugin-typescript2" githup 上找到 Issues 有该解决方法,升级版本到>=0.31.0 这个版本,然后这个问题就解决了。
tslib升级之前
tslib升级之后
2.第2个问题,在webpack启动时候出现Error: error:0308010C:digital envelope routines::unsupported,这个问题网上已经有了解决方法,其实是node的一个问题,那之后时候就需要在执行命令上加上判断环境添加参数,如果有自己的脚手架可以自己跟逻辑自行判断,上代码
const os = require("os");
const version = process.versions.node.split(".")[0];
const type = {
Darwin: "export NODE_OPTIONS=--openssl-legacy-provider",
Linux: "export NODE_OPTIONS=--openssl-legacy-provider",
Windows_NT: "set NODE_OPTIONS=--openssl-legacy-provider",
};
const scripts = {
dev:
version > 16
? `${
type[os.type()]
} && webpack-dev-server --config ${webpackPath}webpack.config.js`
: `webpack-dev-server --config ${webpackPath}webpack.config.js`,
};
const cmdStr = scripts[name];
通过以上方式就可以解决升级node版本之后的问题了!!!