跳到主要内容

借助 Source Map 还原 JS 错误真实代码行

对于前端应用来说,JS 错误的发生直接影响前端应用的质量,因此对于 JS 错误的定位及诊断显得尤为重要。基调基调听云提供了 SourceMap 上传来还原代码真正的错误位置,还原 JS 错误现场。这样使得开发者能够迅速定位出错的源代码位置以及相应的代码块。

什么是 Source Map

Source Map 是一个存储源代码与编译代码对应位置映射的信息文件,便于开发人员定位上述代码错误。实际上,它就是一个 JSON 键值对,利用VLQ 编码与特定的规则存储位置信息。简而言之,可以理解为 Source Map 在处理前的代码和处理后的代码之间搭建了一座桥梁。

Source Map 支持通过 CLI 方式上传,Tingyun CLI 是一个 CLI 程序,是上传 Source Map 的主要方式。小程序需要上传两个Source Map文件:微信平台Source Map和程序压缩的Source Map。

安装

npm安装

当前工作目录安装:

  1. 进入前端工程目录,安装CLI包。

    npm install @tingyun-common/cli
  2. 验证安装成功。

    ./node_modules/.bin/tingyun-cli -v

    如果终端中打印tingyun-cli版本证明安装成功。

全局安装:

  1. 安装。

    npm install -g @tingyun-common/cli --unsafe-perm

    需要确保有权限访问全局的node_modules目录,如果在Linux、Mac环境遇到权限问题,建议使用root安装。

    npm install -g @tingyun-common/cli --unsafe-perm
  2. 验证安装成功。

    tingyun-cli -v

    如果终端中打印tingyun-cli版本证明安装成功。

其他npm安装

配置CLI下载地址:

--tingyuncli_cdnurl=<下载地址根路径>

使用示例:

npm install @tingyun-common/cli --tingyuncli_cdnurl=http://example.com/path

手动下载可执行文件

可以在基调基调听云文件下载服务器查看 tingyun-cli 已经发布的版本,并下载到 Linux、Mac、Windows 平台的可执行文件。下载之后可以重命名为 tingyun-cli.exetingyun-cli 来使用。注意可执行文件是 CLI 程序,需要在终端中使用。

使用

  1. 初始化。

    Tingyun CLI依赖于配置文件来使用, 配置文件名为.tingyunclirc或.tingyunclirc.toml, 格式为toml格式。配置文件信息可以在应用设置中复制或者通过运行tingyun-cli init提供的交互式信息输入工具来初始化。在使用CLI上传SourceMap之前, 需要保证当前目录或用户目录存在配置文件。

    • 在项目工作目录中执行初始化命令生成配置文件.tingyunclirc.toml。

      tingyun-cli init -y
    • 打开配置文件。配置文件使用toml格式, 生成的配置文件说明 。

      [auth]
      # 平台access token, 应用设置获取
      token = ""

      [base]
      # 应用名称, 可选, 标记作用, 应用设置获取
      app_name = ""
      # 应用token, 应用设置获取
      app_token = ""
      # sourcemap上传地址, 应用设置获取
      beacon = ""
      # 产品类型, 应用设置获取
      product_type = "mp"
    • 在应用设置界面复制配置信息, 粘贴到.tingyunclirc.toml文件,保存。

  2. 上传SourceMap。

    命令结构:

    tingyun-cli release upload <版本> <上传文件或目录> --sourcemap

    为了准确解析不同版本 JS 文件的报错, Source Map 文件必须上传到某个版本下(关于版本 CLI 命令见下方完整命令列表)。此版本是用户项目的应用版本, 每次 js 文件重新打包都需要重新更换版本上传。

    示例:

    tingyun-cli release upload V1.0.0 ./dist --sourcemap

    上传 dist 目录下的 Source Map 文件到 V1.0.0版本。

  3. 设置应用版本。

    为了准确关联JS错误版本,用户项目中需要在嵌码代码后加入monitor.setReleaseId。此值需要在每次发版时与上一步指定的版本保持一致。

    monitor.setReleaseId ('V1.0.0');

    探针会获取monitor.setReleaseId的内容作为应用版本上传。

CLI 命令

  • 查看版本:

    tingyun-cli -v
  • 交互式问卷模式在当前目录初始化配置文件:

    tingyun-cli init

    --yes, -y 可以跳过问卷,生成一个模板配置文件:

    tingyun-cli init -y
  • 展示当前版本列表

    tingyun-cli release list
  • 删除版本

    tingyun-cli release delete <release>
  • 创建版本

    tingyun-cli release new <release>
  • 上传版本

    tingyun-cli release upload <release> <files>... [flags]

    Flags说明:

    • --sourcemap:按SourceMap形式处理上传文件, 默认识别.map文件,并尝试解析.js中sourcemapping映射。
    • --no-overwirte:上传不覆盖同名文件, 默认覆盖。
    • --config:指定配置文件路径, 全局flags,对所有命令子命令都生效。

    示例:

    tingyun-cli release upload V1.0.0 ./dist --sourcemap --config /my/config/dir/.tingyunclirc