Function 如何在NUXT中为调用API设置全局函数?

Function 如何在NUXT中为调用API设置全局函数?,function,api,vue.js,nuxt.js,global,Function,Api,Vue.js,Nuxt.js,Global,谷歌搜索了一段时间后, 我在plugins/callApi.js中这样做 import axios from 'axios'; import Vue from 'vue'; Vue.use(callApi); export default async (apiUrl, postData, headers = {}) => { let msg = await axios.post(https://my-api-location.com' + apiUrl,postData); re

谷歌搜索了一段时间后, 我在plugins/callApi.js中这样做

import axios from 'axios';
import Vue from 'vue';
Vue.use(callApi);

export default async (apiUrl, postData, headers = {}) => {
  let msg = await axios.post(https://my-api-location.com' + apiUrl,postData);
  return msg.data;
};
然后在nuxt.config.js中设置

plugins: [
    '~plugins/callApi.js']
当我想用它的时候

const msgData = await callApi('/api/news/getNewsList', postData);
if (msgData.response === 'success') { .......
但当我启动Thread dev时,它会高亮显示“Vue.use(callApi);”部分,并说“callApi未定义”


我怎么能修好它?非常感谢:)

我实际上重新阅读了你的答案,因为我有点困惑

因此,在callApi.js中,您定义了您想要的内容,但是您在实际定义callApi的文件中调用了Vue.use(callApi)

在编译器转到Vue.use(callApi)的那一刻,这个变量“callApi”还没有定义(因为它只有在编译完这个文件后才可用)

所以,就这样做吧

import axios from 'axios';
import Vue from 'vue';

export default async (apiUrl, postData, headers = {}) => {
  let msg = await axios.post(https://my-api-location.com' + apiUrl,postData);
  return msg.data;
};
然后,通过在nuxt.config文件中的plugins属性上设置插件路径(与您所做的完全相同),将自动调用callApi文件(尝试在callApi文件中放置控制台日志,在启动应用程序时您将看到它被记录)

你想要什么的一个例子:

现在在你的插件中,你必须决定你想要做什么。您可能希望公开该函数或使其全局可用,这取决于您

对于最后一个选项,您可能希望在此处查看:


祝你好运

非常感谢!!让我更了解Vue.use()