#948·debug

在 ESM 中使用 URL 指定命名空间

作者: sebamarynissen创建于 2023年10月19日更新于 2025年10月14日
标签featurechange-minor

在 Node 中使用原生 esm 时,无法使用以下模式:

javascript
const debug = require('debug')('namespace');

而我们必须使用以下代码:

javascript
import createDebug from 'debug';
const debug = createDebug('namespace');

在我的一个项目中,我发现自己采用了另一种方法,其中我做了类似以下的事情:

javascript
import createDebug from 'debug';
const url = new URL(import.meta.url);
const [[namespace]] = url.searchParams;
export default createDebug(namespace);

这样就可以执行以下类似的操作:

javascript
// 在服务器中
import debug from './debug.js?server';

// 在工作程序中
import debug from './debug.js?worker';

我很好奇,是否在库中添加此功能会有所帮助。我很乐意清理一下代码,并为此提交一个 PR。另一种方法是,如果不希望在库中添加此功能,则可以在 debug 模块的基础上创建自己的 npm 模块。