【发布时间】:2021-07-27 00:23:36
【问题描述】:
我正在 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
}
}
【问题讨论】:
-
您是否在生产环境中设置了环境变量?
-
我没有,我应该创建什么 .env 变量?
-
您在哪里托管您的应用程序?等等,你根本不使用
.env文件吗? URL 等是否被硬编码到您的代码中? -
我使用的唯一 .env 变量是 MONGODB_URI。我不知道我还需要什么其他 .env 变量
-
您在哪里托管您的应用程序?
.env通常不会被 git 跟踪,因此如果您将其部署到生产环境,平台将不知道您的.env文件。
标签: javascript vue.js nuxt.js vercel