与 Node & npm 的兼容性
视频描述 跳转到标题
探索如何将 Deno 无缝集成到您现有的 Node.js 项目中。在此视频中,我们将使用 Node.js 标准库和带有简单前缀的 npm 模块,保持与 CommonJS 项目的兼容性,并利用 Deno 的特性,如依赖安装、格式化和代码检查。让您的 Node.js 项目过渡轻松自如,无需大量重写。
文字记录和代码 跳转到标题
选择使用 Deno 并不意味着我们无法利用 Node.js 生态系统。这也不意味着我们必须从头开始重建所有 Node.js 项目。
使用标准库或 npm 生态系统的功能,就像添加一个前缀一样简单。如果您想了解更多关于 Node API 的信息,可以查看Node API 文档。
以下是使用 Node 的文件系统模块与 promises API 的一个示例
async function readFile() {
try {
const data = await fs.readFile("example.txt", "utf8");
console.log(data);
} catch (error) {
console.error("Error reading file", error);
}
}
readFile();
我们读取文件并控制台输出数据。
在 Node 中,我们会从 fs/promises
导入 fs
,例如:
import fs from "fs/promises";
在 Deno 中,我们只需在导入前加上 Node 前缀,例如:
import fs from "node:fs/promises";
然后我们运行 deno main.ts
并选择“以 Node.js 内置读取权限运行 Deno”。
如果我们运行 deno main.ts
并允许读取访问,它将从文件中读取。
更新我们应用程序中的任何导入,以使用此 Node 说明符,将启用任何使用 Node.js 内置的代码。
Deno 甚至支持 CommonJS 项目,这感觉超出了预期,我认为这非常酷!
如果我们想在应用程序中使用一个 npm 模块,比如来自 Sentry 的模块,该怎么办?
这次我们将使用 npm 冒号说明符
import * as Sentry from "npm:@sentry/node";
Sentry.init({ dsn: "https://example.com" });
function main() {
try {
throw new Error("This is an error");
} catch (error) {
Sentry.captureException(error);
console.error("Error caught", error);
}
}
我们将运行命令
deno run main.ts
这将请求访问我们的主目录和其他位置,瞧!我们也捕获到了这个错误!这种向后兼容性非常棒。
您正在处理现有的 Node.js 项目吗?使用 Deno 2 也可以做到这一点。您可以使用 deno install
来安装依赖项,可以使用 deno fmt
进行格式化,可以使用 deno lint
进行代码检查,我们甚至可以运行 deno lint --fix
来自动修复任何代码检查问题。
是的,您也可以直接运行 Deno,因此对于 package.json
中包含的任何脚本,只需运行 deno task
并加上脚本名称即可,例如:
deno task dev
我们可以使用以前编写的所有代码,而无需对其进行过多更改或调整,Deno 就能让它正常工作!