【问题标题】:TS2304:Cannot find name 'btoa'TS2304:找不到名称“btoa”
【发布时间】:2017-08-11 11:19:34
【问题描述】:

我正在使用btoa 方法对用户名、密码进行哈希处理,这似乎工作正常,但此错误出现在我的 TypeScript 错误 - WebStorm 中。如何解决?

js 代码

let base64hash = btoa(user.username+ ':' + user.key);

tsconfig.json

/* tsconfig.json */
{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [
      "es2016"
    ]
  }
}

【问题讨论】:

标签: typescript webstorm


【解决方案1】:

编译器找不到btoa() 的定义的原因是您没有包含所有必要的库。

当您使用 --lib 编译器选项时,您需要包含所有未使用此选项时默认包含的库。
在您的情况下,缺少的是 DOM lib,所以它应该是:

/* tsconfig.json */
{
    ...
    "compilerOptions": {
        ...
        "lib": [
            "es2016", "DOM"
        ]
    }
}

作为btoa is in the lib.dom.d.ts的定义。

【讨论】:

  • 设置 "lib": ["es2016", "DOM"] 在我运行测试时仍会导致“未定义 btoa”。是否需要引用 lib.dom.d.ts 或者是否需要引用其他 tsconfig.json 选项?
猜你喜欢
  • 2019-04-21
  • 1970-01-01
  • 2022-01-20
  • 2017-08-23
  • 1970-01-01
  • 2017-11-03
  • 2019-12-24
  • 1970-01-01
  • 2017-11-26
相关资源
最近更新 更多