如何获取当前模块的目录和文件名?在 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.ts
和C:example
(。
*nix(不是Windows(的另一种选择是使用第三方模块,例如deno-dirname
:
import __ from 'https://deno.land/x/dirname/mod.ts';
const { __filename, __dirname } = __(import.meta);
但这也会在Windows上提供不正确的路径。