You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite项目用glsl-transpiler遇esbuild报错及require未定义问题求助

解决Vite项目中使用glsl-transpiler的问题

步骤1:安装CommonJS转换插件

glsl-transpiler是基于CommonJS编写的旧包,浏览器环境不支持require语法,需要用@rollup/plugin-commonjs转换它的模块语法。执行安装命令:

npm install @rollup/plugin-commonjs --save-dev

步骤2:配置Vite处理目标包

修改vite.config.js,同时解决预构建报错和require未定义的问题:

import { defineConfig } from 'vite'
import commonjs from '@rollup/plugin-commonjs'

export default defineConfig({
  optimizeDeps: {
    // 排除glsl-transpiler及其依赖的预构建,避免escaper入口解析错误
    exclude: ['glsl-transpiler', 'escaper']
  },
  plugins: [
    // 针对目标包启用CommonJS转换
    {
      ...commonjs({
        include: /node_modules\/(glsl-transpiler|escaper)/
      }),
      enforce: 'post' // 确保转换逻辑在Vite默认插件之后执行
    }
  ]
})

步骤3:代码中正常引入使用

直接用ES模块语法引入即可,插件会自动处理内部的require调用:

import transpile from 'glsl-transpiler'

// 示例用法
const transpiler = transpile({
  // 自定义配置选项
})
const convertedCode = transpiler(`
  // 你的GLSL代码片段
`)

备选方案:使用简化插件

如果上述配置不生效,可以尝试vite-plugin-commonjs-externals:

  1. 安装插件:
npm install vite-plugin-commonjs-externals --save-dev
  1. 修改Vite配置:
import { defineConfig } from 'vite'
import commonjsExternals from 'vite-plugin-commonjs-externals'

export default defineConfig({
  plugins: [
    commonjsExternals({
      externals: ['glsl-transpiler', 'escaper']
    })
  ]
})

问题根源说明

  • escaper包的package.json未正确配置main/module字段,导致Vite预构建工具esbuild无法识别入口,因此需要排除预构建。
  • glsl-transpiler依赖Node.js的require语法,浏览器原生不支持,必须通过插件将CommonJS语法转换为浏览器兼容的ES模块语法。

内容的提问来源于stack exchange,提问作者Simon Warchol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:10:33