Node.js' __dirname & __filename 在 Deno 中等效



如何获取当前模块的目录和文件名?在 Node 中.js我会使用:__dirname&__filename

在 Deno 中,没有像__dirname__filename这样的变量,但由于import.meta.url,您可以获得相同的值

在 *nix(包括 MacOS(上,您可以使用URL构造函数(不适用于 Windows,请参阅下一个选项(:

const __filename = new URL('', import.meta.url).pathname;
// Will contain trailing slash
const __dirname = new URL('.', import.meta.url).pathname;

注意:在Windows上,__filename类似于/C:/example/mod.ts__dirname将是/C:/example/。但是下面的下一个替代方案将适用于Windows。


或者,您可以使用std/path,它适用于 *nix 和 Windows:

import * as path from "https://deno.land/std@0.188.0/path/mod.ts";
const __filename = path.fromFileUrl(import.meta.url);
// Without trailing slash
const __dirname = path.dirname(path.fromFileUrl(import.meta.url));

这样,即使在Windows上,您也可以获得标准的Windows路径(如C:examplemod.tsC:example(。


*nix(不是Windows(的另一种选择是使用第三方模块,例如deno-dirname

import __ from 'https://deno.land/x/dirname/mod.ts';
const { __filename, __dirname } = __(import.meta);

但这也会在Windows上提供不正确的路径。

相关内容

  • 没有找到相关文章

最新更新