react 17 引入 @cosmjs/amino 运行,报错如下:
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
新建 react 项目
npx create-react-app react17-cosmjs-conflect
安装 @cosmjs/amino
npm i @cosmjs/amino
在 /src/index.js 引入 @cosmjs/stargate
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import {decodeBech32Pubkey} from '@cosmjs/amino'
console.log(decodeBech32Pubkey)
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
reportWebVitals();
运行
npm run start
报错如开篇所示
npx create-react-app 命令创建的 React17 默认调用的是 webpack5 ,相比 webpack4 ,精简了很多自带的包,需要手动安装才行
将 react-scripts 由默认的 5.0.0 改为 4.0.3 ,npm i react-scripts@4.0.3 即可
将 react 17 的 webpack config 从 node_modules 里暴露出来,如果提示 git uncommitted 就先 commit 一下
npm run eject
安装这 4 个包:
npm i stream-browserify buffer path-browserify crypto-browserify
根据报错提示配置 /config/webpack.config.js
搜索“resolve:”,在 resolve 内添加 fallback 节点,内容如下
fallback: {
"stream": require.resolve("stream-browserify"),
"buffer": require.resolve("buffer/"),
"path": require.resolve("path-browserify"),
"crypto": require.resolve("crypto-browserify")
}
这时候再 npm run start 运行就没有 error 了,但是有 40 个 warning ,都是关于 cosmjs 缺少 source map 的,如果不想看到这个错误,可以在跟 resolve 节点同级的地方添加以下属性,搜索“resolve:”,在上一行放:
ignoreWarnings: [/Failed to parse source map/],
提示:如果没有将 webpack config 从 node_modules 里暴露出来,直接在项目根目录创建 webpack.config.js 文件去配置无法解决此 bug
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.