首页 > 解决方案 > 从 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。用户登录后有没有办法在库中使用授权令牌?

标签: vue.js

解决方案


推荐阅读