Adamgreg
Adamgreg10mo ago

`deno check` error: Cannot find name 'Deno'`

In my project, deno check has started producing the error TS2304 [ERROR]: Cannot find name 'Deno' . I've found a lot of reports about this error coming from the VS Code extension, but in my case it's coming from Deno itself, and the VS Code extension does NOT show this problem. I'm quite confused! Can anybody suggest a solution please?
7 Replies
Adamgreg
Adamgreg10mo ago
In case it helps anyone else: I resolved the problem by adding /// <reference lib="deno.ns" /> to the top of the module that used the Deno object. I still don't know why that became necessary (after updating a dependency?), and why is it not necessary in every module that uses Deno
bartlomieju
bartlomieju10mo ago
Probably because a dependency uses a directive like this an overrides the default library. Vscode should provide you with a hint to add this exact reference
Adamgreg
Adamgreg10mo ago
Ah, thanks. I didn't see a hint from VS Code. Since the Typescript compiler is bundled inside Deno itself in this case, would it be possible to make a change in Deno so that this is unnecessary? I assume there's no scenario where Deno is unavailable?
bartlomieju
bartlomieju10mo ago
I'm not sure, kinda makes sense. @dsherret thoughts on this?
NDH
NDH10mo ago
It's been my experience that once you add a /// <reference to a file, it's represented in all other files. At least in main.ts, in my case. I write all front end code in TS and bundle with esbuild. In main.ts, I add /// <reference lib="dom" />, and never need to add it in other files. VSCode on Windows.
dsherret
dsherret10mo ago
GitHub
Prevent no-default-lib removing Deno global? · Issue #20420 · den...
It is quite annoying to import something and it has a /// <reference no-default-lib="true" /> directive as it will remove the Deno global. Perhaps we should look into if there's...
Adamgreg
Adamgreg10mo ago
That's awesome, thanks!