kikitte / MVTImageryProvider

A Mapbox style renderer for CesiumJS
MIT License
192 stars 50 forks source link

vite 加 vite-plugin-cesium里面引入使用会报错 #18

Open yanfeiyang1218 opened 2 years ago

yanfeiyang1218 commented 2 years ago

image Cannot read properties of undefined (reading '_requestTransformFn') 构建的时候就抛出来了,是不是因为用的es5语法解析不了呢

yanfeiyang1218 commented 2 years ago

image

kikitte commented 2 years ago

是的,我测试后发现即使不用vite-plugin-cesium,在vite项目中使用MVTImageryProvider会报这个错误,原因是vite尝试将软件包中的mapbox-gl.js转换为ESM(Vite文档),but MVTImageryProvider所使用得mapbox-gl.js是一个commonjs包,vite在转换过程中出现了偏差。我目前对vite不是很熟悉,可能得以后有时间查看了,如果你知道在vite中如何避免转换成ESM的话那就可以解决这个问题。另一种可行的办法是将mapbox-gl.js作为可执行文件通过html的script标签引入,这样子vite就不会对其处理。要修改得地方为:

  1. 将mapbox-gl.js的module.exports改为window.Mapbox image
  2. 将MVTImageryProvider类所在的index.js文件中所有的关于Mapbox的使用改为window.Mapbox

如此,应当可行。

yanfeiyang1218 commented 2 years ago

已验证,方案可行,谢谢!

yanfeiyang1218 commented 2 years ago

好的,我试一下。感谢

---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2022年09月15日 18:39 | | 收件人 | @.> | | 抄送至 | @.**@.> | | 主题 | Re: [kikitte/MVTImageryProvider] vite 加 vite-plugin-cesium里面引入使用会报错 (Issue #18) |

是的,我测试后发现即使不用vite-plugin-cesium,在vite项目中使用MVTImageryProvider会报这个错误,原因是vite尝试将软件包中的mapbox-gl.js转换为ESM(Vite文档),but MVTImageryProvider所使用得mapbox-gl.js是一个commonjs包,vite在转换过程中出现了偏差。我目前对vite不是很熟悉,可能得以后有时间查看了,如果你知道在vite中如何避免转换成ESM的话那就可以解决这个问题。另一种可行的办法是将mapbox-gl.js作为可执行文件通过html的script标签引入,这样子vite就不会对其处理。要修改得地方为:

将mapbox-gl.js的module.exports改为window.Mapbox

将MVTImageryProvider类所在的index.js文件中所有的关于Mapbox的使用改为window.Mapbox

如此,应当可行。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

hongfaqiu commented 1 year ago

vite会自动将cjs模块转换为esm,Mapbox Vector Tile Basic JS Renderer的_transformRequest之前在写法上有一点问题,修复之后就可以了,可以看看这个https://github.com/kikitte/MVTImageryProvider/issues/21#issuecomment-1617477186

kikitte commented 1 year ago

vite会自动将cjs模块转换为esm,Mapbox Vector Tile Basic JS Renderer的_transformRequest之前在写法上有一点问题,修复之后就可以了,可以看看这个#21 (comment)

谢谢!