Alf*_*lle 7 javascript node.js eslint vue.js
我正在尝试按照本教程进行操作:https : //developer.okta.com/blog/2017/09/14/lazy-developers-guide-to-auth-with-vue
但正在得到:
ERROR Failed to compile with 1 errors
error in ./src/auth.js
? https://google.com/#q=standard%2Fno-callback-literal Unexpected literal in error position of callback
src/auth.js:7:15
if (cb) cb(true)
^
? https://google.com/#q=standard%2Fno-callback-literal Unexpected literal in error position of callback
src/auth.js:14:17
if (cb) cb(true)
^
? https://google.com/#q=standard%2Fno-callback-literal Unexpected literal in error position of callback
src/auth.js:17:17
if (cb) cb(false)
^
? https://google.com/#q=standard%2Fno-callback-literal Unexpected literal in error position of callback
src/auth.js:43:7
cb({
^
? https://google.com/#q=standard%2Fno-callback-literal Unexpected literal in error position of callback
src/auth.js:48:7
cb({ authenticated: false })
^
? 5 problems (5 errors, 0 warnings)
Errors:
5 https://google.com/#q=standard%2Fno-callback-literal
@ ./src/router/index.js 3:0-26
@ ./src/main.js
@ multi ./build/dev-client ./src/main.js
> Listening at http://localhost:8080
Run Code Online (Sandbox Code Playgroud)
失败的代码如下:
/* globals localStorage */
export default {
login (email, pass, cb) {
cb = arguments[arguments.length - 1]
if (localStorage.token) {
if (cb) cb(true)
this.onChange(true)
return
}
pretendRequest(email, pass, (res) => {
if (res.authenticated) {
localStorage.token = res.token
if (cb) cb(true)
this.onChange(true)
} else {
if (cb) cb(false)
this.onChange(false)
}
})
},
getToken () {
return localStorage.token
},
logout (cb) {
delete localStorage.token
if (cb) cb()
this.onChange(false)
},
loggedIn () {
return !!localStorage.token
},
onChange () {}
}
function pretendRequest (email, pass, cb) {
setTimeout(() => {
if (email === 'joe@example.com' && pass === 'password1') {
cb({
authenticated: true,
token: Math.random().toString(36).substring(7)
})
} else {
cb({ authenticated: false })
}
}, 0)
}
Run Code Online (Sandbox Code Playgroud)
所以一般来说是if (cb) cb(X).
试用谷歌的东西似乎cb(false)并cb(true)不允许,但我卡在如何与这个例子很容易地解决这个问题。
这是我的登录代码:
import auth from '../auth'
export default {
data () {
return {
email: 'joe@example.com',
pass: '',
error: false
}
},
methods: {
login () {
auth.login(this.email, this.pass, loggedIn => {
if (!loggedIn) {
this.error = true
} else {
this.$router.replace(this.$route.query.redirect || '/')
}
})
}
}
}
Run Code Online (Sandbox Code Playgroud)
它似乎是由您使用的某些代码检查工具引起的。它认为您需要将错误作为回调的第一个参数传递。您可以通过将函数名称从cbcb 或回调更改为其他名称来解决此问题。
这是您首先使用带有错误的登录回调的方式:
auth.login(this.email, this.pass, (err, loggedIn) => {
if (err) {
// Probably do something with the error
// LoggedIn isn't really necessary, unless it contains some info about the logged in user
this.error = true
} else {
this.$router.replace(this.$route.query.redirect || '/')
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6039 次 |
| 最近记录: |