typescript - 如何解决与错误相关的错误:打字稿中的 TS2705
问题描述
错误 TS2705:ES5/ES3 中的异步函数或方法需要“Promise”构造函数。确保您有“Promise”构造函数的声明或在您的--lib
选项中包含“ES2015”。
import * as Hapi from 'hapi';
import * as IConfig from 'config';
const config = JSON.parse(JSON.stringify(IConfig));
const serverConnections = config.server,
server: Hapi.Server = new Hapi.Server(serverConnections);
export module Server {
export const start = async () => {
server.route({
path: '/',
method: 'GET',
handler(request, h) {
return "hello!!!"
},
});
console.log('serverstart')
server.start();
}
}
解决方案
当您启动一个最小的新 TypeScript 项目时,您的tsconfig.json
文件将接近空。这意味着编译器不知道您选择的平台上可以使用哪些库。从本质上讲,您将或多或少拥有一个基本版本的 javascript 以及任何类型的库类型您npm install
的依赖项。通过准系统,我的意思是包含一些默认库。根据撰写本文时,文档指出:
注入默认的库列表。注入的默认库是:
- 对于 --target ES5: DOM,ES5,ScriptHost
- 对于 --target ES6: DOM,ES6,DOM.Iterable,ScriptHost
因为您的示例代码中有一些使用关键字的代码 - 这是Promise APIasync
周围的语法糖- TypeScript 将尝试将其编译为 Promises。但是,您尚未列出您的平台可以支持的库。
为了告诉编译器你想要定位哪些 API,你需要给它一些提示。
有两种方法可以做到这一点:
- 添加
"lib":["es2015"]
到您的tsconfig.json
文件中 - 使用 --lib 标志运行 typescript cli 命令,如下所示:
tsc --lib ES2015
推荐阅读
- javascript - 如何获取通配符表单 ID
- javascript - 光标:指针在 React 中不起作用
- reactjs - 子类组件调用父类组件的方法
- system.reactive - 编写 IObservables 并在注册后进行清理
- c# - C# - 检查抽搐流是否在线
- javascript - 如何使用 JS 执行构建打字稿?
- android - Proguard 后的 Stacktraces 在 Kotlin 文件中的行号错误
- php - 使用 Arduino 草图修复 php 检索。一直在工作,现在坏了
- javascript - 为foreach循环内的单选按钮设置默认值-MVC
- c# - 如何在 XSLT 中嵌套元素以实现条件样式?