vue3+vite 包中使用useRoute()报错

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,所以运行没有问题

### 解决方案 在 Vue 3 使用 ViteTypeScript 的项目中遇到 CSS `@import` 报错的情况通常是因为缺少必要的配置或插件支持。以下是详细的解决方案: #### 配置 Vite 支持 CSS Modules 或其他预处理器 为了使 `@import` 正常工作,可以在 `vite.config.ts` 中添加对 CSS 处理的支持。如果使用的是 LESS、SASS 等预处理语言,则需安装相应的加载器。 ```typescript // vite.config.ts import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import path from 'path' export default defineConfig({ plugins: [ vue(), // 如果需要额外的插件可以在这里加入 ], css: { preprocessorOptions: { less: { additionalData: `@import "@/styles/variables.less";`, // 自定义路径导入全局变量或其他样式文件 } } }, resolve: { alias: { '@': path.resolve(__dirname, 'src') } } }) ``` 此设置允许开发者指定要自动引入到每一个 `.less` 文件中的公共样式表[^2]。 #### 修改 tsconfig.json 设置编译选项 确保项目的 `tsconfig.json` 已经正确设置了模块解析方式和其他必要参数: ```json { "compilerOptions": { ... "baseUrl": ".", "paths": { "@/*": ["./src/*"] } } } ``` 这有助于 TypeScript 更好地理解相对路径和别名映射关系[^1]。 #### 更新 main.ts 加载应用实例 确认入口文件已经按照标准流程初始化了应用程序并挂载到了 DOM 节点上: ```typescript // main.ts import { createApp } from 'vue'; import App from './App.vue'; import router from './router'; const app = createApp(App); app.use(router).mount('#app'); ``` 以上步骤能够帮助解决大多数情况下由于配置不当引起的 `@import` 错误问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值