cesium1.126.0 nodejs 22安装依赖运行报错

CesiumJs

nodejs 22安装cesium1.126.0后运行报错了

Missing "./lib/zip-no-worker.js" specifier in "@zip.js/zip.js" package [plugin vite:dep-pre-bundle]

    node_modules/.pnpm/@cesium+engine@14.0.0/node_modules/@cesium/engine/Source/DataSources/exportKml.js:23:21:
      23 │ import * as zip from "@zip.js/zip.js/lib/zip-no-worker.js";
         ╵                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  This error came from the "onResolve" callback registered here:

    node_modules/.pnpm/esbuild@0.18.20/node_modules/esbuild/lib/main.js:1292:20:
      1292 │       let promise = setup({
           ╵                     ^                                                                                                                                   

    at setup (file:///Users/zhaowanjun/Downloads/252_wushui_vue3/node_modules/.pnpm/vite@4.5.14_@types+node@24.10.1_sass@1.94.2_terser@5.44.1/node_modules/vite/dist/node/chunks/dep-827b23df.js:39957:19)
    at handlePlugins (/Users/zhaowanjun/Downloads/252_wushui_vue3/node_modules/.pnpm/esbuild@0.18.20/node_modules/esbuild/lib/main.js:1292:21)
    at buildOrContextImpl (/Users/zhaowanjun/Downloads/252_wushui_vue3/node_modules/.pnpm/esbuild@0.18.20/node_modules/esbuild/lib/main.js:978:5)
    at Object.buildOrContext (/Users/zhaowanjun/Downloads/252_wushui_vue3/node_modules/.pnpm/esbuild@0.18.20/node_modules/esbuild/lib/main.js:786:5)
    at /Users/zhaowanjun/Downloads/252_wushui_vue3/node_modules/.pnpm/esbuild@0.18.20/node_modules/esbuild/lib/main.js:2186:68
    at new Promise (<anonymous>)
    at Object.context (/Users/zhaowanjun/Downloads/252_wushui_vue3/node_modules/.pnpm/esbuild@0.18.20/node_modules/esbuild/lib/main.js:2186:27)
    at Object.context (/Users/zhaowanjun/Downloads/252_wushui_vue3/node_modules/.pnpm/esbuild@0.18.20/node_modules/esbuild/lib/main.js:2026:58)
    at prepareEsbuildOptimizerRun (file:///Users/zhaowanjun/Downloads/252_wushui_vue3/node_modules/.pnpm/vite@4.5.14_@types+node@24.10.1_sass@1.94.2_terser@5.44.1/node_modules/vite/dist/node/chunks/dep-827b23df.js:46045:35)

✘ [ERROR] Missing "./lib/zip-no-worker.js" specifier in "@zip.js/zip.js" package [plugin vite:dep-pre-bundle]

    node_modules/.pnpm/@cesium+engine@14.0.0/node_modules/@cesium/engine/Source/DataSources/KmlDataSource.js:45:21:
      45 │ import * as zip from "@zip.js/zip.js/lib/zip-no-worker.js";

解决办法

  1. 安装:

    pnpm add -D patch-package postinstall-postinstall
    
  2. package.json 增加:

    "scripts": {
      "postinstall": "patch-package"
    }
    
  3. 手动改 node_modules 里这两个文件:

    • node_modules/@cesium/engine/Source/DataSources/exportKml.js
    • node_modules/@cesium/engine/Source/DataSources/KmlDataSource.js

    把:

    import * as zip from "@zip.js/zip.js/lib/zip-no-worker.js";
    

    改成:

    import * as zip from "@zip.js/zip.js";
    
  4. 改完之后执行一次:

    npx patch-package @cesium/engine
    

这样以后你无论 Node 版本、@zip.js/zip.js 版本如何,这两处 import 都会被改为新写法,Vite 不会再报 Missing "./lib/zip-no-worker.js" specifier


依赖中增加@cesium/engine

"@cesium/engine": "14.0.0"
{
  "name": "chengzhenwushui",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "build-qiniu": "vite build && node ./qiniu.js",
    "preview": "vite preview",
    "postinstall": "patch-package"
  },
  "dependencies": {
    "@meruem117/vue-seamless-scroll": "^0.1.8",
    "@turf/turf": "^7.2.0",
    "@vue/shared": "^3.2.47",
    "amfe-flexible": "^2.2.1",
    "autoprefixer": "^10.4.13",
    "axios": "^1.3.4",
    "cesium": "1.126.0",
    "dayjs": "^1.11.9",
    "disable-devtool": "^0.3.7",
    "echarts": "^5.2.0",
    "element-plus": "^2.9.5",
    "fs": "0.0.1-security",
    "gsap": "^3.11.4",
    "postcss": "^8.4.21",
    "postcss-loader": "^7.0.2",
    "postcss-pxtorem": "^6.0.0",
    "qiniu": "^7.8.0",
    "relation-graph": "^2.2.10",
    "sass": "^1.57.1",
    "sass-loader": "^13.2.0",
    "style-loader": "^3.3.1",
    "vite-plugin-cesium": "github:yelingkong/vite-plugin-cesium",
    "vite-plugin-compression": "^0.5.1",
    "vue": "^3.2.45",
    "vue-router": "^4.1.6",
    "wow.js": "^1.2.2",
    "@cesium/engine": "14.0.0"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^4.0.0",
    "patch-package": "^8.0.1",
    "postinstall-postinstall": "^2.1.0",
    "vite": "^4.0.0"
  }
}

喜欢