Deno Typescript无法找到服务器依赖注入



我目前正在试验Deno及其测试功能。我想构建一个本地服务器,并将标准库中的serve函数注入到我的类中。目前,我运行deno test --allow-all并得到错误:

error: TS2304 [ERROR]: Cannot find name 'Server'.
runningServer: Server;

我遵循了Deno手册中建议的模式,将我的导入移动到deps.ts

deps.ts

export { assertEquals } from "https://deno.land/std/testing/asserts.ts";
export { serve } from "https://deno.land/std@0.88.0/http/server.ts";

main.ts

import { assertEquals, serve } from "./deps.ts";
import { localServer } from "./local_server.ts";
Deno.test("can query a local server", async () => {
const ls = new localServer("Hello World!", 8000, serve);
ls.listen();
const request = await fetch("http://0.0.0.0:8000/");
const response = await request.text();
assertEquals(response, "Hello World!");
ls.destroy();
});

local_server.ts

class localServer {
runningServer: Server;
response: string;
port: number;
constructor(
response: string,
port: number,
makeServer: {
(addr: string | Pick<Deno.ListenOptions, "port" | "hostname">): Server;
(arg0: { port: number }): Server;
},
) {
this.response = response;
this.port = port;
this.runningServer = makeServer({ port: this.port });
}
async listen() {
const body = this.response;
for await (const req of this.runningServer) {
req.respond({ body });
}
}
destroy() {
this.runningServer.close();
}
}
export { localServer };

问题很可能是fetch("http://0.0.0.0:8000/")。我猜你填了那个IP地址,因为服务器在日志中报告它是listening on 0.0.0.0。这并不意味着您可以在该地址上查询它,0.0.0.0是任何IPv4地址的占位符,因此不是查询的有效IP地址。

使用localhost,::1127.0.0.1或其他有效的IP地址或主机名

最新更新