vue3+vite 包中使用useRoute()报错;pnpm运行和npm运行坑
packageA :使用了npm publish发包,组件里面使用了vue-route中得useRoute()
- project项目中使用了packeageA ,同时项目中也引用了useRoute()
1、使用pnpm运行时,
vue-route+vue+ts需要版本一致,不然会生成两个js文件;项目中和包中得useRoute使用了两个js, 包packageA中的useRoute会导致routeLocation找不到。package.json中需要锁定版本;
通过查看源代码得知, useRoute()返回
function useRoute(_name) {
return inject(routeLocationKey);
}
app.provide(routeLocationKey, shallowReactive(reactiveRoute));
app.provide是在vue-route.js中进行注入, packageA的useRoute使用了单独的js, 所以会导致useRoute报错,所以需要锁定版本,保证packageA和project项目同时只使用了一个vue-route
2、使用npm运行打包时,project和packageA中route都只会引入一个js,所以运行没有问题