在 vercel 上托管时 NuxtJS 生产中的 URIError

时间:2021-05-04 16:15:49

标签: javascript vue.js nuxt.js vercel

我正在 nuxt 中使用 ssr 开发应用程序。我遇到的问题是在构建和生成后运行“npm start”。该应用程序开始正常工作,但是当我尝试登录时它不起作用,尽管在开发模式下它运行良好。 api 是用 express 构建的,我使用令牌和 nuxt auth 作为身份验证方法。在 auth 策略中声明的服务器端点永远不会被执行,请使用登录端点处理程序上的 console.log() 来检查。任何人都知道我该如何解决这个问题?感谢您的时间!

登录组件脚本:

<script>
import { mapGetters } from 'vuex'
import index from './index.vue'

export default {
  components: {
    index,
  },
  data() {
    return {
      email: '',
      password: '',
    }
  },
  computed: {
    ...mapGetters(['isAuthenticated']),
  },
  methods: {
    close() {
      this.$router.push('/')
    },
    login() {
      const button = document.querySelector('.center-form button')
      button.disabled = true
      button.innerHTML = '...'

      const data = { password: this.password, email: this.email }
      this.$auth
        .loginWith('local', { data })
        .then((x) => {
          this.$auth.strategy.token.set(x.data.token)
          this.$router.push('publicar-inmueble')
        })
        .catch((err) => {
          console.log(err)
        })
    },
  },
}
</script>

Nuxt 身份验证策略:

auth: {
  strategies: {
    local: {
      token: {
        property: 'token'
      },
      user: {
        property: 'user'
      },
      endpoints: {
        login: { url: '/server/api/usuarios/login', method: 'post', propertyName: 'data' },
        user: { url: '/server/api/usuarios/mi-perfil', method: 'get', propertyName: 'data' },
        logout: { url: '/server/api/usuarios/logout', method: 'delete' }
      }
    }
  }
},

商店:

export const getters = {
  isAuthenticated(state) {
    return state.auth.loggedIn
  },

  loggedInUser(state) {
    return state.auth.user
  }
}

1 个答案:

答案 0 :(得分:1)

转到您在 vercel 上的应用设置,网址应如下所示:
https://vercel.com/<your-username>/<your-project>/settings/environment-variables

在那里,放入您的 env 变量(我的屏幕截图是一个值示例!)并触发您的应用程序的构建。那么应该可以正常工作。

enter image description here