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

前端 - 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 bundler的nodeJS/express应用程序。我使用rollup配置文件,命令在包中定义。json,比如:“build”:“env ROLLUP_OPTIONS='prod'ROLLUP--config configs/ROLLUP.config.js”。当我尝试“npm运行构建”时,我遇到了错误: 在汇总源代码中,这是导致错误的函数: 此函数(见上图)位于nod

  • 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如下所示:

  • 如图,在 monorepo 中使用了 tailwindcss 后作为一个案例打包,并且按需生成了 dist/style.css 文件,但在演示项目中引入 css 文件时并没有生效也没有报错。 而后在演示项目也引用 tailwindcss 才得以生效,但显然这并不符合需求。 希望得到的结果是演示项目不需要使用 tailwindcss 就能让组件库的样式生效。 问题应该如何解决? 是否是我代码或配置有

  • 问题内容: 我收到这个奇怪的错误 我如何从中恢复?有任何想法吗 ? 谢谢 问题答案: 您丢失了与表1684和数据库17369相关的文件。在目录base / 17369中检查名称为1684的状态文件。 您可以确定它是哪个表: 1)获取数据库名称: 2)获取表名(连接到受影响的数据库): 可能没有更多可以做的事情了。仅从备份还原。

  • 我想在数据目录中为应用程序创建一个数据库。我试着使用 但我总是遇到以下异常:无法打开数据库文件 Logcat得出以下结果: 04-10 19:55:09.387: E/SqliteDatabase aseCpp(554):sqlite3_open_v2("/data/data/at.einkaufsliste/database/Einkaufsliste.sqlite", 我设置了权限外部存储和组