
本文介绍如何绕过编译后的 cesium.js,直接以 es 模块方式导入 cesium 官方源码(`./source/`)或未压缩构建版,解决 `cannot use import statement outside a module` 和 `cesium is not defined` 等常见错误,适用于源码调试、定制化构建及深度学习场景。
Cesium 官方仓库默认不支持直接 import ./Source/Cesium 目录下的原始 TypeScript/JavaScript 源文件——因为这些文件并非独立的 ES 模块入口,且存在循环依赖、全局声明(如 define)、以及未处理的 AMD/CommonJS 兼容逻辑。若强行导入(如 import * as Cesium from './Source/Cesium'),会触发语法错误(Cannot use import statement outside a module)或运行时引用失败(Cesium is not defined)。
✅ 正确做法是使用 Cesium 构建产物中专为开发者设计的 ESM 兼容入口:
import * as Cesium from './Cesium/Build/CesiumUnminified/index.js';
该路径指向 Cesium 主仓库执行 npm run build 后生成的未压缩、保留源码映射(source map)且导出标准 ES 模块的构建版本。它完整包含所有功能,同时支持 import 语法、console.log(Cesium) 调试、断点步入源码,并可配合现代打包工具(Vite、Webpack 5+、Rollup)正常解析。
⚠️ 注意事项:
- ✅ 必须确保项目已启用模块化环境(如 HTML 中
- ❌ 不要尝试直接导入 ./Source/ 下任意单个文件(如 ./Source/Core/Matrix4.js),因其依赖 Cesium 全局命名空间或内部模块系统;
- ? 若需真正修改源码并实时生效,建议克隆 CesiumGS/cesium 仓库,运行 npm install && npm run build,再通过上述路径引用 CesiumUnminified;
- ? 浏览器原生 ESM 加载时,请确保服务端支持 Content-Type: text/javascript 响应头(推荐用 vite preview、http-server -c-1 或 VS Code Live Server 插件启动本地服务)。
? 补充说明:Cesium 官方文档明确指出,CesiumUnminified/index.js 是为“源码级调试与开发”而设计的标准 ESM 入口(见 Build Guide)。它比 Cesium.js 更易读、可调试,又比原始 ./Source/ 更稳定可靠——是连接官方源码与实际项目开发的最佳桥梁。










