从
在开发模式下运行良好,但在构建过程之后,vue不包括app.js输出文件中的setupToken函数。
// App.vue
//...
import { setupToken } from '@/api
export default {
mounted () {
this.setupToken() // TypeError: this.setupToken is not a function
}
}
// @/api.js
import { mande } from 'mande'
export const postsAPI = mande(`${process.env.VUE_APP_ROOT_URL}/api/v1/posts`)
export const setupToken = ({ token }) => {
postsAPI.options.headers.Authorization = 'Bearer ' + token
}
我猜是webpack配置的问题(我使用默认配置(,但不确定如何修复它。
App.vue
导出的对象上不存在setupToken
。
您正在从@/api
导入setupToken
,因此必须直接调用它,即setupToken()
和,而不是作为实例方法,例如this.setupToken()
WebPack发现您没有使用从@/api
导入的方法(因为您将其作为实例方法进行调用(,因此它的树将其抖掉。
顺便说一句,试着使用TypeScript,它会让你知道那个错误。
- 在
main.js
中导入api.js
import Vue from 'vue'
import App from './App.vue'
import api from './api'
Vue.config.productionTip = false
new Vue({
api,
render: function (h) {
return h(App)
},
}).$mount('#app')
- 修改
api.js
:
import Vue from 'vue'
Vue.mixin({
methods: {
setupToken({ token }) {
postsAPI.options.headers.Authorization = 'Bearer ' + token
}
}
}