Я использую Webpack через Vue CLI и получаю сообщение об ошибке Error in created hook: "TypeError: _api__WEBPACK_IMPORTED_MODULE_0__.default.$_playerApi_getPlayers is not a function", когда пытаюсь использовать свою страницу.
Вот моя древовидная структура:
.
+ main.js
+ app/
| + api.js
| + App.vue
| + players/
| | + api.js
| | + index.js
| | + routes.js
| | + components/
| | | + index.js
| | | + Login.vue
| | |
| | + vuex/
| | + actions.js
| | + ...
| |
| + others/
| + api.js
| + ...
|
+ ...
приложение / игроки / vuex / actions.js:
import { default as api } from '../../api'
export default {
loadPlayers({ commit }) {
return api.$_playerApi_getPlayers().then(response => { // <--- ERROR LINE
commit('STORE_PLAYERS', response.body)
return response
})
.catch(error => {
throw error
})
},
loadPlayer({ commit }, playerId) {
return api.$_playerApi_getPlayer(playerId).then(response => {
commit('LOAD_PLAYER', response.data)
return response
})
.catch(error => {
throw error
})
},
...
}
приложение / игроки / api.js:
export default {
...
$_playerApi_getPlayer(playerId = '') {
...
},
$_playerApi_getPlayers() {
...
},
...
}
приложение / api.js:
import { api as players } from './players'
export default {
players,
}
Я почти уверен, что это неправильно (обв.), Но не уверен, как заставить его работать должным образом.
Что я здесь делаю не так? Экспорт и импорт кажутся нормальными, но они почему-то ломаются, что я просто не могу увидеть или отладить.
Я пробовал использовать следующее в моем приложение / api.js, но это неправильно, потому что экспорт не является массивом:
import { api as players } from './players'
export default {
...players,
}
Я также пробовал использовать в моем приложение / игроки / api.js следующее, но это тоже не сработало:
export default {
methods: {
...
$_playerApi_getPlayer(playerId = '') {
...
},
$_playerApi_getPlayers() {
...
},
...
},
}
* as players это пробовали?
в вашем app/app.js, почему не import api as players from './players'? без {}
@wrufesh местоположение, которое он дает в качестве местоположения ошибки, - это указанная строка в приложение / игроки / vuex / actions.js
@wrufesh Созданный хук просто вызывает this.loadPlayers()..., который был отображен через ...mapActions
Разместите, пожалуйста, свои игроки / index.js



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В вашем app/api.js:
import * as players from './players/api'
export default {
...players,
}
и в вашем app/players/api.js:
export function $_playerApi_getPlayer(playerId = '') {
...
}
export function $_playerApi_getPlayers() {
...
}
Это не сработало. Я по-прежнему получаю ту же ошибку, что и выше.
Это сработало, если я изменил приложение / api.js на экспорт с ...players.
Вы можете объяснить, почему это необходимо в некоторых случаях?
Можете ли вы опубликовать созданный код ловушки, откуда возникает ошибка?