10

我想将 Node.js 项目转换为 Deno。有没有可用的指南?

我当前的项目有很多 NPM 文件,并且已经在 TypeScript 中。

有小费吗?

4

3 回答 3

8

Deno 和 Node.js API 不兼容,当然您可以重用所有 javascript/typescript 代码,但您需要重构或添加 polyfill。

为了简化迁移,Deno 提供了一个Node Compatibility librarystd/node它仍然需要做很多工作。

幸运require的是已经支持的 polyfill 之一

import { createRequire } from "https://deno.land/std/node/module.ts";

const require = createRequire(import.meta.url);
// Loads native module polyfill.
const path = require("path");
// Visits node_modules.
const leftPad = require("left-pad");

console.log(leftPad('5', 5, '0'))

如果您运行该示例:

npm i left-pad
deno run --allow-read node.js
// 00005

如您所见left-pad,已从node_modules/. 因此,对于不依赖 Node.js API 的 NPM 包,您可以轻松地使用std/node.

这是所有支持的模块的列表


现在,对于严重依赖 Node.js API 的包,你能做的最好的事情就是使用 Deno API 重写它们。

随着项目的成熟,将有更简单的方法将 Node.js 项目转换为 Deno。

IMO 对于在 Node.js 上完美运行的大型项目来说,迁移它们是不值得的。Deno 和 Node.js 可以共存,不是两者兼而有之。如果您愿意,可以在 Deno 上构建新项目,而不是迁移旧项目。

于 2020-05-13T09:11:15.433 回答
6

查看Denoify,它是一个构建工具,可以满足您的需求。您不必编写工具为您执行的端口,文档中对此进行了详细说明。

披露:我是作者。

回购

于 2020-05-16T12:50:35.077 回答
0

从 Deno v1.15 开始,Node.js 兼容模式不稳定并带有一些警告。在跟踪 Node Compat 模式的进度的repo中也存在问题。

文档中引用

Node.js 兼容模式

从 v1.15 开始,Deno 提供了 Node 兼容模式,可以直接在 Deno 中运行为 Node.js 编写的程序子集。可以通过在 CLI 中传递 --compat 标志来激活兼容模式。

⚠️ 目前使用兼容模式需要 --unstable 标志。如果您打算使用 CJS 模块,还需要 --allow-read 标志。

⚠️ 包管理目前超出了 Node.js 兼容模式的范围。暂时我们建议继续使用您当前的解决方案(npm、yarn、pnpm)。

请检查文档

于 2021-12-17T02:34:55.570 回答