Skip to main content

Nuxt

Use @gmap-vue/v3 from a client-only Nuxt plugin because Google Maps depends on browser APIs.

Client plugin​

Create a client plugin such as plugins/gmap-vue.client.ts:

plugins/gmap-vue.client.ts
import { createGmapVuePlugin } from "@gmap-vue/v3";
import "@gmap-vue/v3/dist/style.css";

export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.use(
createGmapVuePlugin({
load: {
key: useRuntimeConfig().public.googleMapsApiKey,
libraries: "places",
},
}),
);
});

Add the public runtime config value in nuxt.config.ts:

nuxt.config.ts
export default defineNuxtConfig({
runtimeConfig: {
public: {
googleMapsApiKey: process.env.NUXT_PUBLIC_GOOGLE_MAPS_API_KEY,
},
},
});
warning

runtimeConfig.public values are sent to the browser. Restrict the Google Maps key by HTTP referrer and enable only the APIs used by your Nuxt app.

Transpilation​

If your Nuxt build needs explicit transpilation, add the package name rather than importing from node_modules directly:

nuxt.config.ts
export default defineNuxtConfig({
build: {
transpile: ["@gmap-vue/v3"],
},
});