Deno 中使用 ES6 模块时的陷阱与解决方案

阅读时长 3 分钟读完

前言

Deno 是一个由 Node.js 创始人 Ryan Dahl 所开发的运行时环境,它是一个现代的、安全的 TypeScript 运行环境。相比于 Node.js,Deno 支持直接运行 TypeScript,同时也提供了更加友好的 API 和更好的安全性。

本文主要讨论在 Deno 中使用 ES6 模块时会遇到的问题,以及如何解决这些问题。

陷阱

模块路径不符合规范

在 Node.js 中,我们使用 CommonJS 的 require() 来加载模块,而加载的时候通常使用相对或绝对路径。当我们使用 ES6 的 import 来加载模块的时候,我们的路径必须包含扩展名。

例如,以下代码在 Node.js 中是正常的:

而在 Deno 中,我们使用 ES6 的 import 来加载模块,路径必须包含扩展名,否则会抛出错误:

缺少文件扩展名

除了模块路径必须包含扩展名之外,Deno 同样要求我们在 import 语句中显式指定模块的扩展名,否则会抛出错误:

缺少必要的 TypeScript 配置

Deno 本身是对 TypeScript 很友好的,事实上,它可以直接运行 TypeScript 文件而无需任何构建工具。但是,有时候我们会遇到一些奇怪的问题,例如:

然后我们在另一个文件中使用 import 来加载这个模块,但是却遇到了以下错误:

这时候,我们需要在项目根目录创建一个 tsconfig.json 文件并配置它:

通过以上配置,我们可以指定 TypeScript 的编译目标为 ES6,以及将模块解析为 Node.js 风格,同时也可以解决以上的问题。

解决方案

添加必要的扩展名

为了解决模块路径不符合规范的问题,我们需要在导入模块时添加必要的扩展名:

配置 TypeScript

如果你遇到了无法访问模块的问题,可以尝试添加必要的 TypeScript 配置,如下:

然后在终端中运行以下命令:

需要注意的是,Deno 中访问文件系统和网络是需要显式进行授权的,因此我们需要在运行时添加相关权限。

总结

Deno 是一个新的运行时环境,与 Node.js 有所不同,需要开发者注意一些细节问题。本文介绍了在使用 ES6 模块时可能遇到的问题以及对应的解决方案。希望能对你有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64fda1f895b1f8cacdceba14

纠错
反馈