react-amap icon indicating copy to clipboard operation
react-amap copied to clipboard

本地react版本导致的问题

Open Mickeygogo opened this issue 3 years ago • 10 comments

本地项目的react版本是16.9.0,下载完这个安装包之后,项目启动不起来了,请问这个问题怎么解决啊

Mickeygogo avatar Jan 19 '22 07:01 Mickeygogo

@Mickeygogo 你的问题我无法回答,没有任何信息,尝试更新一下

https://github.com/uiwjs/react-amap/blob/8b089e94b5bf40fea3f9c894402839710c970cfa/packages/circle-marker/package.json#L32-L35

jaywcjlove avatar Jan 19 '22 07:01 jaywcjlove

更新我本地项目的react版本?

Mickeygogo avatar Jan 19 '22 07:01 Mickeygogo

就是本来我的版本是17.0.2的版本,但是之后我将react版本降到16.9.0 后,项目就跑不起来了 爆:ENOENT: no such file or directory, open '@uiw/react-amap/node_modules/@uiw/react-amap-marker/esm/index.js'

Mickeygogo avatar Jan 19 '22 07:01 Mickeygogo

@Mickeygogo 你这个是构建工具的问题吧 @uiw/react-amap 依赖的 @uiw/react-amap-marker 包文件不存在

jaywcjlove avatar Jan 19 '22 07:01 jaywcjlove

@Mickeygogo 你可以降级到 @uiw/[email protected]

jaywcjlove avatar Jan 19 '22 09:01 jaywcjlove

我仔细看了一下,本地的react版本必须16.14.0以上 才可以跑成功,麻烦更新一下文档,因为你们一个包中用到了react/jsx-runtime ,而这个只有react16.14以上才有

Mickeygogo avatar Jan 19 '22 09:01 Mickeygogo

@Mickeygogo

  • https://github.com/facebook/react/issues/20235

jaywcjlove avatar Jan 19 '22 09:01 jaywcjlove

@Mickeygogo 嗯是的,16.14.0+ 是没有问题的

https://codesandbox.io/s/react-amap-example-y0n6c-204-kcpp2?file=/src/App.js

jaywcjlove avatar Jan 19 '22 09:01 jaywcjlove

https://github.com/uiwjs/react-amap/blob/610a770b36e6393a72d93910ecfaa7d06da1356e/packages/api-loader/package.json#L31-L34

:)

jaywcjlove avatar Jan 19 '22 09:01 jaywcjlove

本地项目的react版本是16.9.0,下载完这个安装包之后,项目启动不起来了,请问这个问题怎么解决啊

我已经有解决办法了,我的版本跟你的一样,我选择打补丁的方式,让react的React.createElement来代替react/jsx-runtime的效果,具体而言就是

import React from 'react';
....
....

  if (error) {
    return React.createElement('div', { style: { color: 'red' } }, error.message);
  } else if (loaded) {
    return React.createElement(React.Fragment, null, children);
  }

来代替

import { jsx as _jsx } from "react/jsx-runtime";
...
...
  if (error) {
    return /*#__PURE__*/_jsx("div", {
      style: {
        color: 'red'
      },
      children: error.message
    });
  } else if (loaded) {
    return /*#__PURE__*/_jsx(Fragment, {
      children: children
    });
  }

类似的,你以这种形式把其他用到react/jsx-runtime的改成这样,记得导入React!!

我使用@uiw/react-amap的版本是5.0.5,如果你无法升级react大于17的话,可以使用我的补丁: patches.zip 文件里的@uiw+react-amap-polygon+5.0.5不要使用

indredK avatar Jul 11 '23 13:07 indredK