Deno Deploy용 코드에서 [deno-ts 2339]를 수정하는 방법

Deno Deploy를 공부하고 있습니다.

이 문서는 Deno Deploy용 코드를 작성하는 동안 발생한 [deno-ts 2339] 오류를 처리하는 방법을 요약한 것입니다.

발생하는 오류



오류는 편집기에 표시되는 오류입니다[deno-ts 2339] [E] Property 'respondWith' does not exist on type 'Event'.

예를 들어 Hello World 페이지의 the official documentation 코드를 사용합니다.

// server.ts
addEventListener("fetch", (event) => {
  const response = new Response("Hello World!", {
    headers: { "content-type": "text/plain" },
  });
  event.respondWith(response);
});


이 모든 코드를 사용해도 오류가 발생합니다.



"respondWithEvent에 정의되어 있지 않습니다"라는 경고가 표시됩니다.

Deno Deploy 환경에서 무시할 수 있으며 deployctl, deno lint 특별히 화를 내지 않습니다.
즉, LSP는 경고만 제공하므로 걱정할 필요가 없습니다.
그러나 개발 중에 계속 오류가 발생하는 것은 그리 유쾌하지 않습니다. 솔직히 말해서 귀찮습니다.

대처 방법



그것에 대한 문제는 deploy_feedback 저장소에서 제기되었습니다.

https://github.com/denoland/deploy_feedback/issues/13

그리고 이 문제가 언급되었습니다. 이 방법을 사용할 수 있습니다.

https://github.com/denoland/deployctl/issues/24#issuecomment-819272065

먼저 유형 정의 파일을 생성합니다.

❯ deployctl types > deploy.d.ts


다음으로 server.ts 의 첫 번째 부분에 Triple-Slash Directives를 추가합니다.

https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html

/// <reference path="./deploy.d.ts" />

addEventListener("fetch", (event) => {
  const response = new Response("Hello Deno Deploy!", {
    headers: { "content-type": "text/plain" },
  });
  event.respondWith(response);
});


이렇게 하면 오류가 제거됩니다.



그러나 지금deployctl run . /server.ts은 실패합니다.

올바르게 작동하려면 런타임에 libs 옵션을 추가해야 합니다.

❯ deployctl run --libs="" ./server.ts


이것으로 오류 처리 및 실행을 위한 명령 조정이 완료됩니다.

태스크 러너 사용



매번 옵션을 입력하는 것이 번거롭습니다.
Deno의 태스크 러너인 Velociraptor를 사용하여 매번 입력할 명령을 등록할 수 있습니다.

https://velociraptor.run/

velociraptor.yml에 다음 설명을 추가합니다.

scripts:
  dev:
    desc: Starts local server
    cmd: deployctl run --libs="" --watch ./server.ts


이제 vr dev 로 로컬 서버를 시작할 수 있습니다.

❯ vr dev


폐쇄



개인적으로 Deno Deploy에서 실행된다는 가정 하에 점점 Deno 개발이 작성될 것이라고 생각합니다.
그래서 템플릿 저장소에 포함시켰습니다.

https://github.com/kawarimidoll/deno-dev-template

아래 글을 번역한 것입니다.
번역에 오류가 있으면 댓글을 남겨주세요.

https://zenn.dev/kawarimidoll/articles/efed8ada433f24

좋은 웹페이지 즐겨찾기