vue3+ts+cesium环境配置遇到得坑.


首先我们先创建个vue3+ts项目

vue create cesium_dome

然后引入cesium

npm i cesium --save

在vue.config.js配置(没有就自己在项目根目录创建一个)

const CopyWebpackPlugin = require("copy-webpack-plugin");
const webpack = require("webpack");
const path = require("path");

let cesiumSource = "./node_modules/cesium/Source";
let cesiumWorkers = "Workers";
module.exports = {
  configureWebpack: {
    resolve: {
      alias: {
        "@": path.resolve("src"),
      },
    },
    plugins: [
      new CopyWebpackPlugin([{
        from: path.join(cesiumSource, cesiumWorkers),
        to: "Workers"
      }, ]),
      new CopyWebpackPlugin([{
        from: path.join(cesiumSource, "Assets"),
        to: "Assets"
      }, ]),
      new CopyWebpackPlugin([{
        from: path.join(cesiumSource, "Widgets"),
        to: "Widgets"
      }, ]),
      new CopyWebpackPlugin([{
        from: path.join(cesiumSource, "ThirdParty/Workers"),
        to: "ThirdParty/Workers",
      }, ]),
      new webpack.DefinePlugin({
        CESIUM_BASE_URL: JSON.stringify("./"),
      }),
    ],
    module: {
      unknownContextCritical: false,
      unknownContextRegExp: /\/cesium\/cesium\/Source\/Core\/buildModuleUrl\.js/,
    },
  },
};

创建个index.vue

<template>
  <div class="home" id="cesiumContainer">
  </div>
</template>
<script lang="ts">
import { defineComponent, onMounted } from 'vue';
import {
  Viewer,
} from "cesium";
import "cesium/Build/Cesium/Widgets/widgets.css";
export default defineComponent({
  name: 'Home',
  setup(){
    onMounted(()=>{
        new Viewer('cesiumContainer');
    })
  }
});
</script>
<style scoped>
.home{
  width: 100%;
  height: 500px;
}
</style>

启动会出现以下问题

 

由于在 ./node_modules/cesium/Source/ThirdParty/zip.js 文件中使用了 import.meta 语法,webpack 默认不支持,在进行项目构建时,会报如下错误,提示信息需要添加 loader。

接下来我们安装 loader

npm install @open-wc/webpack-import-meta-loader --save-dev

然后在vue.config.js中添加(在module中[…]后面)

 
      rules: [
      {
      test: /\.js$/,
      use: {
      loader: '@open-wc/webpack-import-meta-loader',
      },
      },
    ]

然后重启

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM