RollupError: Invalid value "umd" for option "output.format" - UMD and IIFE output formats are not supported for code-splitting builds.
问题起因:vitepress内build的时候报错window is not defined,后查明是icon组件内iconfont.js有使用window。
改写为
<script lang="ts" setup>import { computed, onMounted } from 'vue';import './index.css';// import './font/iconfont.js';onMounted(() => { //@ts-ignore import('./font/iconfont.js').then(() => { });})
rollup -c 打包会报错!!!
//rollup.config.js配置
module.exports = {
input: './packages/index.ts',output: { name: 'XXXXXXX', file: file('umd'), format: 'umd' // 编译模式},plugins: [ nodeResolve(), typescript({ tsconfigOverride: overrides }), vuePlugin(), postcss({ plugins: [autoprefixer()], extract: 'style.css' })],external: ['vue'] // 依赖模块
}
目测是因为你配置的 output.format
是 UMD,而 UMD 和 IIFE 均不支持分包(code splitting),所以也就不支持动态 import
另外的依赖。
解决方案的话,可以考虑把 iconfont 直接放到 html 里,作为全局依赖。反正图标嘛,除非你打算优化,否则的话放全局使用应该很合理。
从你给出的错误信息来看,Rollup 打包时出现的问题是 "Invalid value 'umd' for option 'output.format' - UMD and IIFE output formats are not supported for code-splitting builds." 这个错误表示你正在尝试使用 UMD 格式进行代码分割,但 Rollup 不支持这种格式的代码分割。
解决这个问题的一种方法是改变你的 rollup.config.js
配置文件中的 output.format
。你可以尝试将 format
改为 'cjs'
或 'esm'
,具体取决于你的需求。例如:
module.exports = { input: './packages/index.ts', output: { name: 'XXXXXXX', file: file('umd'), format: 'cjs' // 或 'esm' }, plugins: [ nodeResolve(), typescript({ tsconfigOverride: overrides }), vuePlugin(), postcss({ plugins: [autoprefixer()], extract: 'style.css' }) ], external: ['vue'] // 依赖模块}
这样更改之后,你可以尝试重新运行 rollup -c
命令。请注意,cjs
代表 CommonJS,而 esm
代表 ES Modules,这两种格式都支持代码分割。
另外,关于 window is not defined
的错误,这可能是因为你在服务器端渲染(SSR)或构建生产版本的应用时,尝试访问了 window
对象。window
对象是浏览器提供的全局对象,在非浏览器环境(如 Node.js)中是不可用的。如果你的应用需要在非浏览器环境中运行,你需要寻找替代方案来处理与 window
对象相关的问题。
rollup打包将less文件转换成css文件, 我要开发一个react组件库,打包后输出esm格式,但是现在所有less都打包成一个文件了,我希望每个css还是单独分开 我用rollup-plugin-postcss 或者rollup-plugin-less都不会输出index.css。要么就是把所有less合并生产一个css, 要么就是用styleInject 添加到head中。
通过vite中rollup打包,如何对lodash做按需打包? 这两种写法在build时 第一种dist体积比第二种要大。都说是第一种写法是将整个lodash打包进了dist。我这里有一个疑问,rollup在build时不是会对代码做按需打包吗? rollup的树摇不会起作用吗? 假设整个项目只使用了一个throttle函数,也会将整个lodash打包到dist吗? 虽然lodash是 cjs规范
我有一个带有rollup bundler的nodeJS/express应用程序。我使用rollup配置文件,命令在包中定义。json,比如:“build”:“env ROLLUP_OPTIONS='prod'ROLLUP--config configs/ROLLUP.config.js”。当我尝试“npm运行构建”时,我遇到了错误: 在汇总源代码中,这是导致错误的函数: 此函数(见上图)位于nod
vue3+vite+electron 打包报错
Vite + Vue3 + Electron 打包后静态资源路径错误 图片 src 如果是动态拼接的话,路径指向会出现问题 第一个路径不正确:file:///G:/vite.svg 第二个路径为:file:///G:/vite-electron/release/win-unpacked/resources/app.asar/dist/vite.svg 还有这种字体文件导入也会出现问题,类似上面直接
我试图为我的盖茨比应用程序建立我的Docker形象。每当我运行命令docker build时-t gatsbyapp,它给了我一个错误: 同时,我的Dockerfile如下所示: