From dbdf770dce4a7c2ee566e7645e30c9800259881f Mon Sep 17 00:00:00 2001 From: Lauri Gates Date: Fri, 23 Aug 2024 17:59:25 +0300 Subject: [PATCH 1/2] feat: remove hardcoded tile base URL, use proxy config instead This approach fixes the CORS errors with the tileset queries. --- Dockerfile | 2 -- src/components/CesiumViewer.vue | 7 +++---- vite.config.ts | 23 ++++++++++++++++++++++- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8dbac8e..4062fa3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,5 @@ FROM node:21-alpine -ARG VITE_TILE_BASE_URL="https://dl2sa.blob.core.windows.net/public3d/katukuntotieto" - WORKDIR /app COPY . . diff --git a/src/components/CesiumViewer.vue b/src/components/CesiumViewer.vue index 4916e39..cdc4d4b 100644 --- a/src/components/CesiumViewer.vue +++ b/src/components/CesiumViewer.vue @@ -26,8 +26,7 @@ import { LayerItemProps } from "./LayerItem.vue"; const store = useStateStore(); const prod = import.meta.env.PROD; -const TILE_BASE_URL = import.meta.env.VITE_TILE_BASE_URL; -console.log(`Tile base url (prod=${prod}): ${TILE_BASE_URL}`); +console.log(`Tile base url (prod=${prod})`); onMounted(async () => { // @ts-ignore @@ -70,7 +69,7 @@ const addConditionLayers = (store: StoreType) => { if (!layer.enabled) { return; } - Cesium.Cesium3DTileset.fromUrl(`${TILE_BASE_URL}/${layer.id}/tileset.json`, { + Cesium.Cesium3DTileset.fromUrl(`/tiles/${layer.id}/tileset.json`, { debugWireframe: false, showOutline: true, enableShowOutline: true, @@ -112,7 +111,7 @@ const addBuildings = (store: StoreType) => { }; const addCenterlines = (store: StoreType, layer: LayerItemProps) => { - Cesium.Cesium3DTileset.fromUrl(`${TILE_BASE_URL}/centerline/tileset.json`, {}).then(lyr => { + Cesium.Cesium3DTileset.fromUrl(`/tiles/centerline/tileset.json`, {}).then(lyr => { if (store.layers["centerline"]) { return; } diff --git a/vite.config.ts b/vite.config.ts index eee01c8..7903f13 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,8 +2,29 @@ import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import cesium from "vite-plugin-cesium"; -// https://vitejs.dev/config/ export default defineConfig({ + server: { + proxy: { + "/tiles": { + target: "https://dl2sa.blob.core.windows.net/public3d/katukuntotieto", + changeOrigin: true, + secure: false, + rewrite: (p) => p.replace(/^\/tiles/, ""), + }, + }, + cors: false, + }, + preview: { + proxy: { + "/tiles": { + target: "https://dl2sa.blob.core.windows.net/public3d/katukuntotieto", + changeOrigin: true, + secure: false, + rewrite: (p) => p.replace(/^\/tiles/, ""), + }, + }, + cors: false, + }, plugins: [ vue({ script: { From 8442b06e40bf2d542540f74a04c2ae7ce9737e90 Mon Sep 17 00:00:00 2001 From: Lauri Gates Date: Fri, 23 Aug 2024 18:42:46 +0300 Subject: [PATCH 2/2] refactor: switch build and preview to use Vite --- Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4062fa3..e1f113a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,8 +4,9 @@ WORKDIR /app COPY . . RUN npm install -RUN npm run build +RUN npx vite build +RUN npx vite optimize EXPOSE 4173 -CMD [ "npm", "run", "preview" ] +CMD [ "npx", "vite", "preview" ]