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

Rollup打包JavaScript模块报错:cars_js未定义的解决咨询

Rollup打包后出现Uncaught ReferenceError: cars_js is not defined的修复方案

问题根源

这个错误本质是Rollup的输出模块格式与浏览器的加载方式不匹配,导致打包后的变量无法被浏览器正确识别或访问。cars_js是Rollup对模块内部变量重命名后的标识,浏览器找不到这个全局变量就会抛出错误。

具体修复步骤

1. 检查并调整Rollup配置文件

打开rollup.config.js,重点修改output配置项,确保格式和全局暴露设置正确:

方案A:使用IIFE格式(适合浏览器全局环境)

将输出格式改为iife(立即执行函数表达式),同时指定全局变量名,让打包后的代码把导出内容挂载到全局:

export default {
  input: 'index.js',
  output: {
    file: 'bundle.js',
    format: 'iife',
    name: 'CarApp' // 自定义全局对象名,后续可通过window.CarApp访问导出内容
  }
};

执行打包命令rollup -c重新生成bundle.js,之后在HTML里用普通<script>引入即可:

<script src="bundle.js"></script>
<!-- 比如要访问cars变量,就用 CarApp.cars -->

方案B:使用ES模块格式(现代浏览器推荐)

如果想保留ES模块特性,修改HTML的script标签为模块类型:

<script type="module" src="bundle.js"></script>

如果需要在全局访问模块内的变量,要在index.js里手动挂载到window:

// index.js
import { cars } from './cars.js';
// 把变量暴露到全局
window.cars = cars;

2. 验证源码的导入导出语法

确保你的模块语法正确:

  • cars.js需正确导出变量:
// cars.js
export const cars = ['Tesla', 'Toyota', 'Ford'];
// 或者用默认导出:export default cars;
  • index.js需正确导入:
// index.js
// 对应命名导出
import { cars } from './cars.js';
// 若用默认导出则写成:import cars from './cars.js';

3. 确认打包命令执行正确

检查package.json里的打包脚本是否正确:

{
  "scripts": {
    "build": "rollup -c"
  }
}

执行npm run build重新打包,确保生成的bundle.js是最新的。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:02:37