我正在构建一个 Vue3 npm 组件库,希望我可以使用 vue-router 的
useRouter
访问当前路由器,并且无论任何 vue 应用程序导入我的库组件,它都会自动提供。
如果直接引用我的库组件
import myCompThatUsesRouter from '../../myCompThatUsesRouter.vue
路由器就可以工作。
如果我通过node_module包引用相同的组件
import myCompThatUsesRouter from '@myPackage'
路由器是undefined
。
我还收到 vue 警告
未找到注入“Symbol()”。
这不是这些注入方法的工作原理吗?
问题是我的库将 vue-router 定义为“依赖项”,而不是“peerDependency”。 https://nodejs.org/es/blog/npm/peer-dependency/
我的 vite 配置还需要将 vue-router 定义为“外部”
vite.config.ts
rollupOptions: {
external: ['vue', 'vue-router']
}