TLDR: Vite未更新node_modules/.vite
缓存中的工作区依赖项。
我在本地运行一个vite服务器,并使用yarn工作区来组织我的项目。
我的(简化)目录:
web/ # @my_app workspace
frontend/ # @my_app/frontend workspace
App.tsx
node_modules/
.vite/ # the vite cache
backend/
shared/
foo.ts
在前端,我使用shared/foo.ts
中定义的常量。
如果我在foo.ts
中定义了一个新的常量export const bar = 1
,尝试从App.tsx
导入它,并在本地运行vite
,我得到以下错误:
Uncaught SyntaxError: The requested module '/node_modules/.vite/deps/@my_app_foo.js?v=cccdb61c' does not provide an export named 'bar' (at App.tsx)
事实上,如果我检查文件/node_modules/.vite/deps/@my_app_foo.js
,我可以看到它没有更新我的最新更改。
我如何让vite更新缓存的依赖当我做更改?
注意:相关的依赖关系不会经常改变,所以它们不需要在更新时热加载(只需要在我运行vite时缓存是最新的)。
Vite预绑定依赖项并在node_modules/.vite/deps
中本地缓存。
vite --force
。这将在每次本地运行vite时更新node_modules/.vite
中绑定的依赖项(并且深度将在node_modules/.vite/deps_temp
而不是deps
中)。- 在
vite.config.js
中配置bundle优化:
export default defineConfig({
optimizeDeps: { exclude: ['@my_app'] },
// ...
});
这将从node_modules/.vite
缓存中排除@my_app
工作空间内容。
两种解决方案都能解决我所面临的问题。