Deno:为 Node.js 内置插件提供 Polyfill
Deno: Provide Polyfills for Node.js Built-Ins
Deno 有办法 shim/polyfill Node.js 模块吗?
也就是说,假设我有一个属于 Node.js 项目的打字稿文件,它看起来像这样
import { performance } from 'perf_hooks';
function hello() {
console.log(performance.performance.timeOrigin)
console.log("Hello World")
}
export {
hello
}
我想在 deno 程序中使用这个模块,所以我做了这样的事情
import {hello} from './some-module.ts'
function main() {
hello()
}
但是,我不能这样做,因为 Deno 中没有 perf_hooks
模块。
% deno run main.ts
Check file:///private/tmp/main.ts
error: TS2305 [ERROR]: Module '"deno:///none.d.ts"' has no exported member 'performance'.
import { performance } from 'perf_hooks';
~~~~~~~~~~~
at file:///private/tmp/some-module.ts:1:10
我想编写自己的 perf_hooks
版本来实现我需要的属性和方法,然后告诉 Deno 嘿——只要有人想要 perf_hook
使用我的改为模块 .
Deno 有内置的东西可以让我这样做吗?如果没有,Deno 社区是否使用一些常见的 practive/bundling 技术来做这类事情。
您可以使用https://deno.land/x/std/node. It provide some Node's built-in modules. For external modules, you can take a look at https://esm.sh(语法为https://esm.sh/<npm-pkg>
。
而如果你想像NodeJS环境一样使用它,你可以这样做:
import { ... } from "module"; // Let's use NodeJS "module" module for this
然后指定一个import map
{
"imports": {
"module": "https://deno.land/std/node/module.ts"
}
}
运行 带有 --import-map
标志
$ deno run --import-map=/path/to/import_map.json your_file.ts
Deno 有办法 shim/polyfill Node.js 模块吗?
也就是说,假设我有一个属于 Node.js 项目的打字稿文件,它看起来像这样
import { performance } from 'perf_hooks';
function hello() {
console.log(performance.performance.timeOrigin)
console.log("Hello World")
}
export {
hello
}
我想在 deno 程序中使用这个模块,所以我做了这样的事情
import {hello} from './some-module.ts'
function main() {
hello()
}
但是,我不能这样做,因为 Deno 中没有 perf_hooks
模块。
% deno run main.ts
Check file:///private/tmp/main.ts
error: TS2305 [ERROR]: Module '"deno:///none.d.ts"' has no exported member 'performance'.
import { performance } from 'perf_hooks';
~~~~~~~~~~~
at file:///private/tmp/some-module.ts:1:10
我想编写自己的 perf_hooks
版本来实现我需要的属性和方法,然后告诉 Deno 嘿——只要有人想要 perf_hook
使用我的改为模块 .
Deno 有内置的东西可以让我这样做吗?如果没有,Deno 社区是否使用一些常见的 practive/bundling 技术来做这类事情。
您可以使用https://deno.land/x/std/node. It provide some Node's built-in modules. For external modules, you can take a look at https://esm.sh(语法为https://esm.sh/<npm-pkg>
。
而如果你想像NodeJS环境一样使用它,你可以这样做:
import { ... } from "module"; // Let's use NodeJS "module" module for this
然后指定一个import map
{
"imports": {
"module": "https://deno.land/std/node/module.ts"
}
}
运行 带有 --import-map
标志
$ deno run --import-map=/path/to/import_map.json your_file.ts