本地构建的故障排除问题

字数统计: 1.3k
阅读时长: 约 2 分钟
当前版本: 4.29

在本地构建应用程序需了解许多相互关联的内容,包括框架、模块捆绑程序、转译器、依赖项库和 GeoScene Maps SDK for JavaScript。本指南主题提供了缩小潜在问题来源的指南。

注: 如果可以在没有框架或捆绑程序的情况下,在 vanilla JavaScript 应用程序中重现问题,则可能需要向易智瑞技术支持报告问题。对于所有其他本地构建问题,请继续阅读。

四个分流步骤

隔离问题有四个基本步骤。

第 1 步 - 审查。 打开浏览器的开发者控制台并检查整个错误消息。大多数情况下,错误中有一些线索可以帮助解决问题。记下错误发生的时间。某些错误仅在构建过程中出现;其他问题可能只在浏览器中运行应用程序时显示,或者仅在将应用程序部署到生产环境时显示。此信息提供了问题发生位置的重要提示。

第 2 步 - 搜索。 在 Internet 上搜索错误消息。这通常是寻找答案或获取如何解决问题提示的最快、最简单的方法。此外,还可查看 SDK 发行说明。

第 3 步 - 重现。 尝试在轻量级 vanilla JavaScript 应用程序中重现该问题,以确定问题是否与 JS Maps SDK 有关。

第 4 步 - 提供示例。 发布您的问题时,请提供一个简单示例。工作示例对于让其他人快速重现您的问题至关重要。共享示例的最佳在线选择包括 codepen.io、github.com、codesandbox 或 StackBlitz。代码片段不能提供足够的项目信息,因为它们不包含有关项目配置设置、依赖项或编码模式等信息。

了解问题的原因

本地构建系统由许多不同的部分组成,因此确定问题发生的位置至关重要。通常,问题出现在三个方面:配置、框架/模块捆绑程序或 Maps SDK。

配置问题

最常见的错误与项目配置有关。这些问题中的大多数看起来像 bug,但事实并非如此。以下是出现这些问题的典型区域:

  • 模块捆绑程序 - 例如 webpack、rollup 或 esbuild 配置

  • 框架 - 例如 React 或 Angular 配置

  • package.json - 例如依赖项

  • Maps SDK - 例如 geosceneConfig, OAuth 令牌

以下是一些常见配置问题的示例。

问题 1 - 许多 404 错误表明生产版本中缺少文件。但开发人员构建工作正常。

  • 解决方案 - 查看框架或模块捆绑程序文档,了解如何为生产构建设置基本路径。

问题 2 - Module parse failed: unexpected token. You may need an appropriate loader to handle this file type.

  • 解决方案 - 这些错误通常与转译有关。您可能缺少转译器插件,或者需要升级到较新版本的模块捆绑程序。

问题 3 - 加载 .wasm.woff 文件时出错。

  • 解决方案 - 使用正确的 MIME 类型配置 Web 服务器。请参阅安装和设置指南主题。

框架/捆绑程序问题

框架和捆绑程序有自己的 bug,需要在各自的 github 库中进行报告或研究。在 Internet 上搜索错误信息通常是缩小这些问题范围的最快方法,并且必须在框架或模块捆绑程序中解决它们。这些 bug 的错误消息经常会提到框架或捆绑程序。以下是包括运行时错误和构建错误的各种示例:

React 运行时错误: Uncaught Error: A React form was unexpectedly submitted...

React 运行时错误: proxyConsole.js:64 Warning: Invalid value for prop 'cancel' on <input> tag. Either remove it from the element, or pass a string or number value to keep it in the DOM. For details, see https://reactjs.org/link/attribute-behavior

Angular 构建错误: Error: Module build failed (from ./node_modules/@ngtools/webpack/src/ivy/index.js): ...Unknown string like token s missing from the TypeScript compilation.

Angular 构建错误: Module parse failed: Unxpected token [5:1202]...You may need an additional loader to handle the results of these loaders

Rollup 构建错误: [!] RollupError: Could not resolve "./b.js" from "../package1/src/a.ts"

Rollup 构建错误: RollupError: Unexpected token...

Maps SDK 问题

很少会遇到仅在本地构建时发生的 Maps SDK 问题。

首先,按照上述步骤和建议进行操作。如果问题还未解决,请尝试在轻量级 vanilla JavaScript 应用程序中重现该问题,而无需框架、模块捆绑程序或转译。Maps SDK 漏洞应报告给易智瑞技术支持。

包含工作示例非常重要,因为项目中包含的配置、代码和依赖项等详细信息很难复制;包含工作示例还能节省时间,因为总会有人要求您提供示例。

以下是一些示例:

TypeScript 错误: Argument of type '{ size: string; color: string; outline: { color: string; width: string; }; }' is not assignable to parameter of type 'SimpleLineSymbolProperties'.

Angular 错误: ERROR: ReferenceError: Cannot access lexical declaration 'e' before initialization at c._renderLegendForElement