当前位置: 首页 > 知识库问答 >
问题:

前端 - Rollup打包错误,onMounted中无法import?

宰宣
2024-01-02

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'] // 依赖模块

}

共有2个答案

刘选
2024-01-02

目测是因为你配置的 output.format 是 UMD,而 UMD 和 IIFE 均不支持分包(code splitting),所以也就不支持动态 import 另外的依赖。

解决方案的话,可以考虑把 iconfont 直接放到 html 里,作为全局依赖。反正图标嘛,除非你打算优化,否则的话放全局使用应该很合理。

沙小白
2024-01-02

从你给出的错误信息来看,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如下所示: