vue.js - 从 npm 打包的 vue 组件库传递/访问应用程序的服务
问题描述
在我的 vue 应用程序中,我有一个实现 Axios 拦截器的服务(axiosAuth.js)文件,它为每个请求添加授权令牌。
我创建了一个组件库,其中包含一些共享组件和 api 管理类,稍后将打包为 npm 包。这些共享 api 调用也需要使用与应用程序相同的授权令牌来请求。我正在尝试将应用程序的 axiosAuth 传递给插件,以便能够使用 axios 拦截器的相同实例。
在应用程序中,我使用库作为插件,
Vue.use(MyPlugin, { 'axiosAuth': mainAxiosAuth });
在我的库的安装方法中,我可以访问这些选项,
install (Vue, options) {
if (!options || !options.axiosAuth) {
throw new Error('Please initialise plugin with Axios instance.')
}
Vue.component('MyComponent1', "component1")
Vue.component('MyComponent2', component2)
...
}
但是,在执行“安装”并且在此之前加载我的 .vue 和 .js 文件之前,选项不可用。
因此,我在我的库中为 axiosAuth 创建了一个包装类,并复制了与应用程序中相同的 axios 拦截器。但是授权令牌在应用程序加载时为空。只有在用户登录后,令牌信息才会使用 vuex 更新和存储。将 Vue.use 上的令牌作为选项传递会在库中提供“null”值。
我如何才能从库插件访问应用程序的 axiosAuth。用户登录后有没有办法在库中使用授权令牌?
解决方案
推荐阅读
- java - 即使在使用 pisano 周期之后,Java 中的斐波那契数也会更大
- python-3.x - ModuleNotFoundError:没有名为“pynput.Keyboard”的模块
- laravel - 事件中的 Laravel broadcastOn() 方法永远不会触发
- android - 如何使用 Gradle 3.5.+ 在 Android Studio 中制作 Android .jar?
- javascript - 如何为同一页面创建多个阅读更多和更少按钮?
- javascript - Javascript - 为什么我的函数是递归的?
- azure-devops - Azure DevOps Sprint 视图按状态折叠
- ansible - 模块用户不接受 ansible-vault 生成的加密密码?
- javascript - 将随机生成的数字存储在变量中,为什么值不会改变?
- javascript - 如何在 vue-panzoom 中实现 zoomIn 和 zoomout