【问题标题】:Node.js' __dirname & __filename equivalent in DenoDeno 中的 Node.js 的 __dirname 和 __filename 等效项
【发布时间】:2020-09-01 21:03:00
【问题描述】:

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

【问题讨论】:

    标签: node.js deno


    【解决方案1】:

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

    您可以为此使用URL 构造函数:

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

    注意:在windows上它将包含/,下面显示的方法将在windows上工作


    另外,你可以使用std/path

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

    其他替代方法是使用第三方模块,例如:deno-dirname

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

    【讨论】:

    • https://deno.land/x/dirname 不存在,这是一个死链接。
    • 这在 Windows 上对我不起作用,我在这里找到了一个可行的解决方案:morioh.com/p/68bf0c73b2bb
    • 也不能在 Windows 上运行 - 它会生成带有不正确前导空格的路径,例如 /C:/path/to/file.jsonreadTextFile 无法理解。
    • @AndrewKoster 至少现在可以了。
    • 太棒了!希望他们这次决定放弃它。
    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 2011-10-12
    • 2016-08-23
    • 1970-01-01
    • 2018-10-31
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多