Adh*_*hoc 5 javascript vue.js server-side-rendering nuxt.js nuxtjs3
我正在 Nuxt 3 中使用 SSR 构建前端网站,后端使用 Laravel。在 Nuxt 3 项目中,我的utils目录中有一个 ApiBridge.js 文件,我用它来组织 API 调用、设置基本 URL 等。自从启动该项目以来,我一直在关闭服务器端渲染的情况下运行该文件。方便,但是当我尝试在 SSR 打开(在 nuxt.config.js 中打开)的情况下运行它时,我收到“Nuxt 实例不可用”错误。我一边忙于这个项目,一边在旅途中学习 Nuxt 3,所以我可能会错过一些明显的东西。
import axios from "axios";
const runtimeConfig = useRuntimeConfig()
const api = axios.create({
baseURL: runtimeConfig?.API_BASE_URL,
withCredentials: true,
});
const apiBridge = {
login: (info) => api.post('/login', {
...info,
}),
register: (info) => api.post('/register', {
...info,
})
/* .... */
}
export default apiBridge;
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?这是一个不好的方法吗?如何修复它?为什么在 SSR 关闭的情况下它还能工作?是因为汽车进口吗?提前致谢!
浏览了一下网络,但没有发现任何有用的东西。
编辑:nuxt.config.js 根据评论的要求
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
modules: [
'@nuxtjs/tailwindcss',
[
'@pinia/nuxt',
{
autoImports: [
// automatically imports `defineStore`
'defineStore', // import { defineStore } from 'pinia'
// automatically imports `defineStore` as `definePiniaStore`
['defineStore', 'definePiniaStore'], // import { defineStore as definePiniaStore } from 'pinia'
],
},
],
],
tailwindcss: {
configPath: './tailwind.config.js'
},
build: {
},
// ssr: false, // remove later
runtimeConfig: {
public: {
BASE_URL: process.env.BASE_URL,
API_BASE_URL: process.env.API_BASE_URL,
}
},
})
Run Code Online (Sandbox Code Playgroud)
经过一番反复之后,我最终将 apiBridge 移动到 composables 目录并将其更改为Nuxt 3 composable。我认为这就是 Nuxt 3 中应该完成的方式。它看起来确实很整洁,并且可以完成工作。
import axios from "axios"
export const useApiBridge = () => {
const runtimeConfig = useRuntimeConfig()
const api = axios.create({
baseURL: runtimeConfig.API_BASE_URL,
withCredentials: true,
});
return {
login: (info) => api.post('/login', {
...info,
}),
register: (info) => api.post('/register', {
...info,
})
}
}
Run Code Online (Sandbox Code Playgroud)
然后在组件和其他文件中我使用它
const apiBridge = useApiBridge()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13915 次 |
最近记录: |