我有一个简单的插件,需要访问一些 API 凭据,以便可以在页面中获取数据。我假设鉴于这些凭据是私有的,它们应该not在公共配置中:
runtimeConfig: {
contentful: {
environment: '',
spaceId: '',
accessToken: ''
},
},
然后在我用来初始化 API 客户端的插件中:
import { createClient } from "contentful";
export default defineNuxtPlugin(nuxtApp => {
const runtimeConfig = useRuntimeConfig()
const client = createClient({
space: runtimeConfig.contentful.spaceId,
accessToken: runtimeConfig.contentful.accessToken,
environment: runtimeConfig.contentful.environment
})
console.log(runtimeConfig.contentful)
return {
provide: {
contentful: client
}
}
})
变量在 SSR 上可用(
console
行显示)但后来我在浏览器中收到此错误:
Expected parameter space
at createClient (http://localhost:63921/_nuxt/node_modules/.vite/deps/contentful.js?v=18c196e8:5296:11)
at http://localhost:63921/_nuxt/plugins/example.js:10:18
at fn (http://localhost:63921/_nuxt/node_modules/nuxt/dist/app/nuxt.mjs?v=18c196e8:146:27)
...
如果我改用公共运行时,它工作正常。鉴于我不想公开 API 访问令牌,我曾假设这不安全。还是我理解错了?
没有
.server
或.client
后缀的插件是全局的,可以在服务器和客户端上工作。如果你想在服务器端使用 API 中的秘密,请在你的插件中添加 example.server.ts
后缀。