开发者问题收集

vite-cli 不支持“npm link”添加本地包

2021-06-14
6307

我使用“npm link my-package”重定向我的 node_module。 但我无法使用“vite dev”成功运行。 Vite 无法解析我的本地私有包。

Uncaught TypeError: Cannot set property 'my-package' of undefined.

但是,如果我从 npm 服务器使用“npm i my-package”,它可以工作。

操作系统:windows

3个回答

https://vitejs.dev/config/dep-optimization-options.html#optimizedeps-include

将其添加到 vite 配置:

optimizeDeps: {
    include: ['my-package'],
},
Tamás Katona
2021-10-20

我遇到了同样的问题,虽然建议使用 optimizeDeps.include ,但它对我来说不起作用。

最初,我在软件包文件夹中运行 npm link ,然后在项目中运行 npm link editorjs-media --save

这使我在 package.json 中留下了一个条目,如下所示 "@adampatterson/editorjs-media": "file:../_packages/editorjs-media",

构建项目导致错误

error during build:
RollupError: "default" is not exported by 

从 Git 安装工作正常。

最终对我有用的是:

export default defineConfig({
  build: {
    rollupOptions: {
      external: ['@adampatterson/editorjs-media']
    }
  },
  // ... other options ...
});
Adam Patterson
2023-11-01

我遇到过类似的问题,涉及 npm link ,它临时使用本地开发的库的未发布版本在使用应用程序的项目中进行测试,而该项目恰好已经使用了该库的先前发布版本。

就我而言,设置 optimizeDeps 也无济于事,因为问题不在于将 commonjs 与 ES 模块混合,因为所有代码都已实现为 ES 模块。

但是,Vite 的 optimizeDeps 文档中的一句话可能很重要:

对链接的 dep 进行更改时, 使用 --force 命令行选项重新启动开发服务器 以使更改生效。

使用项目的 node_modules/.vite/deps 文件夹中有一个缓存,就我而言,使用 npm link 并没有触发 vite 自动更新其缓存。如果使用 --force 重新启动也不起作用,请尝试手动方式并停止开发服务器,删除 node_modules/.vite/deps 的所有内容,然后重新启动开发服务器。这在我的情况下是有效的。

Thomas Urban
2023-11-06