当前位置: 首页 > news >正文

廊坊网站建设廊坊网络公司驻梦广州网络引流公司

廊坊网站建设廊坊网络公司驻梦,广州网络引流公司,湘潭网站,wordpress水印功能使用 dumi 开发 React 组件库时,为避免每次修改都发布到 npm,需要在本地的测试项目中使用 npm link 为组件库建立软连接,方便本地调试。 结果在本地测试项目使用 $ npm link 组件库 后,使用内部组件确报错: react.dev…
  • 使用 dumi 开发 React 组件库时,为避免每次修改都发布到 npm,需要在本地的测试项目中使用 npm link 为组件库建立软连接,方便本地调试。

  • 结果在本地测试项目使用 $ npm link 组件库 后,使用内部组件确报错:

    react.development.js:209 Warning: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
    1. You might have mismatching versions of React and the renderer (such as React DOM)
    2. You might be breaking the Rules of Hooks
    3. You might have more than one copy of React in the same app
    See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.
    
  • 报错信息中提供了三种可能的原因,针对这三个可能原因逐一检查:

    1. React HooksReact 16.8.0 版本中引入的,先检查 reactreact-dom 的版本。发现是高于 16.8.0 的,支持 React Hook。排除

    2. 检查是否违背了调用 hook 的规则。然而组件中并未使用 hook,但是依赖的第三方库使用了 hook,并且使用方式是正确的;排除

    3. 检查项目中是否存在多个不同版本的 react 。发现测试项目和组件库中都存在 react 依赖,但是组件库中的 package.json 中已经将 reactreact-dom 都添加到了 peerDependencies 属性中。待定

  • 极有可能是因为第三条导致了问题,继续查阅文档,官网 在此处 给出过可能的原因。

    This problem can also come up when you use npm link or an equivalent. In that case, your bundler might “see” two Reacts — one in application folder and one in your library folder. Assuming myapp and mylib are sibling folders, one possible fix is to run npm link …/myapp/node_modules/react from mylib. This should make the library use the application’s React copy.

    已经基本确定是由于 npm link 引发了问题,猜测使用 npm link 时,不会忽略 package.json 中的 peerDependencies 选项,而组件库中 react 版本依赖都存放在这个选项内。

    image.png

  • 解决方案

    例如:组件库项目根路径(/Users/xxx/Desktop/design)、测试项目根路径(/Users/xxx/Desktop/testlink)。

    测试项目 中软链接 组件库项目 中安装的 react 版本即可,如果还未解决,再将 react-dom 也进行软链接到测试项目。

    # 1、进入测试项目
    $ cd /Users/xxx/Desktop/testlink# 2、软链接组件库中安装的 react 版本
    $ npm link /Users/xxx/Desktop/design/node_modules/react
    # (备用)如果还是报错,可在链接 react-dom,但是一般不需要,link react 基本也就解决了。
    $ npm link /Users/xxx/Desktop/design/node_modules/react-dom# 3、重新跑测试项目,确保组件库项目包正确,可以重新打包,在到测试项目中 link 组件库包,并重启测试测试项目。
    

    还有个解决方案:删除组件库项目 node_modules 文件夹内的 react 包也可以解决,原理都一样,两者存在一个版本的 react 包即可,但是这种方式不推荐,毕竟删了打包组件库时就报错了,还得重新 npm i 安装依赖。

http://www.yayakq.cn/news/255229/

相关文章:

  • 天助网的网站武义建设局官方网站
  • 来客网站建设室内平面设计主要做什么
  • 联盟文明网站建设有新突破折扣券网站怎么做
  • 工业产品设计与创客实践赛题库网站优化建设上海
  • 招聘网站建设维护万网域名注册官网的阿里云
  • 山东站群网站建设做网站导航条怎么弄
  • 株洲网站优化找哪家微信商城网站
  • 寿光网站制作网页制作与设计先学什么
  • 贵阳网站建设公司哪个好做网站如何对接支付
  • 如何做律所网站网站排名数据
  • 茶叶网站实际案例网站推广营销策划方案
  • 网站开发php技术网站的后台地址
  • 交换机做网站西安建设工程信息网平台变更
  • 洪都建设集团有限公司网站wordpress登录之后强制绑定邮箱
  • 百度注册域名免费建站wordpress 新闻采集站
  • 铭万做的网站上海注册公司电话咨询
  • 英文网站推广工作交换友情链接的要求有
  • 如何给网站添加统计代码商超设计
  • 自己开公司 自己做网站吗系统类小说
  • 网站怎么后台登陆天元建设集团招聘官网
  • 创意个人网站设计网站制作的网站
  • 足球比分网站怎么建设抓好网站建设工作
  • 南宁seo外包服务seo 网站制作
  • 官网网站建设需求文档大型网站开发框架
  • 做网站预付款是多少栾城区城乡建设局网站
  • 手机网站如何制作宁波快速建站模板
  • 怎么弄免费的php空间做网站彩票网站怎么做ip管理
  • 建设网站需要多少钱济南兴田德润o地址不想用原来的网站模板了就用小偷工具采集了一个可是怎么替换
  • 网站检索功能怎么做呢石家庄网络推广询问设想科技
  • 做阿里巴巴的网站的费用吗用易语言做抢购网站软件