如何在 nuxt/axios 中设置 baseUrl?

Posted

技术标签:

【中文标题】如何在 nuxt/axios 中设置 baseUrl?【英文标题】:how to set baseUrl in nuxt/axios? 【发布时间】:2020-01-21 05:35:46 【问题描述】:

在 nuxt axios mudule 中未设置 baseURL,我无法使用 nxut/auth 模块进行身份验证。

这是 nuxt.config.js:

 auth: 
        strategies: 
            local: 
                endpoints: 
                    login: url: 'auth/login', method: 'post', propertyName: 'data.access_token',
                    user: url: 'user', method: 'get', propertyName: 'data',
                    logout: url: 'auth/logout', method: 'post'
                ,
                tokenRequired: true,
                tokenType: 'Bearer',
            ,
            redirect: 
                home: '/',
                login: '/login',
                logout: '/logout'
            
        
    ,


 axios: 
        baseURL: "api.dvl/api/v1/"
    ,

一切正常,但如果我提出请求,它会请求http://localhost:3000/auth/login

怎么了?

我的登录页面:

 data() 
            return 
                title: process.env.title.fa,
                form: 
                    email: null,
                    password: null,
                    remember: false
                
            
        ,
        methods: 
            async login() 
                await this.$axios.$post('/login', this.form)
                this.$auth.login( data: this.form )
            
        

【问题讨论】:

【参考方案1】:

您的异步登录错误。试试下面的代码:

 methods: 
    async login() 
      await this.$auth.loginWith('local', 
        data: 
          email: this.email,
          password: this.password
        
      )
      this.checkLogin()
    ,

    checkLogin() 
      console.log(this.$auth.user)
    
  

【讨论】:

请分享一些解释,以便其他人可以从您的答案中学习 - 究竟出了什么问题,您的代码有何不同? 你已经使用了 nuxt-auth 模块并在 nuxt 配置中设置了本地策略。因此,对于登录,您必须使用 $auth.loginwith('local', data)。【参考方案2】:

因为在客户端请求 axios 不能使用环境变量然后 您应该在 nuxt 配置中使用 axios 的运行时配置 试试这个:

export default 
  modules: [
    '@nuxtjs/axios'
  ],

  axios: 
    baseURL: 'http://localhost:4000', // Used as fallback if no runtime config is provided
  ,

  publicRuntimeConfig: 
    axios: 
      browserBaseURL: process.env.BASE_URL
    
  ,

  privateRuntimeConfig: 
    axios: 
      baseURL: process.env.BASE_URL
    
  ,

【讨论】:

以上是关于如何在 nuxt/axios 中设置 baseUrl?的主要内容,如果未能解决你的问题,请参考以下文章

nuxt axios代理

Nuxt Axios Module 读取状态码

Nuxt Axios 访问 XMLHttpRequest 错误 - 不从源调用 .NET webAPi

Nuxt/TypeScript:无法访问 - TS2339:类型上不存在属性“XXX”

如何在 Netbeans 中设置环境变量?

如何在 Android 中设置 libsvm?