Vite配置Library模式打包后导出的文件无法被其他项目引入怎么办?
我在用Vite的Library模式打包一个工具库时遇到问题,按照文档配置了library选项,但打包生成的umd文件在另一个项目里引入时一直报错:Uncaught TypeError: Cannot read properties of undefined (reading 'myFunction')。
具体操作是这样的:
修改了vite.config.js配置:
export default defineConfig({
build: {
lib: {
entry: path.resolve(__dirname, 'src/index.js'),
name: 'MyLib',
formats: ['umd']
},
rollupOptions: {
external: ['lodash']
}
}
})
然后用vite build生成了dist/mylib.umd.js,但在测试项目里这样引入:
import { myFunction } from '../dist/mylib.umd.js'
控制台提示找不到模块,换成script标签引入时又出现全局变量找不到方法的问题。尝试过在rollupOptions里添加输出dir配置,但好像没解决核心问题…
代码给你:
然后在你的入口文件
src/index.js中,确保你正确导出了方法:接下来重新打包,生成的UMD文件就可以这样使用了:
1. 如果用script标签引入:
2. 如果用ESM模块引入:
关键点在于:
- UMD格式需要定义全局变量名,也就是
name配置项。- 不要随便把依赖标记为
external,除非你确定测试项目里已经安装了这些依赖。- 导出的方式要统一,推荐既有命名导出又有默认导出。
希望这段代码能解决你的问题。如果还有报错,检查一下控制台具体提示,可能是其他配置冲突了。