【问题标题】:__dirname is not defined in Node.js 10 experimental?__dirname 未在 Node.js 10 实验中定义?
【发布时间】:2018-05-10 07:49:09
【问题描述】:

我使用的是 Node.js 10.0.0,我的 index.mjs 看起来像:

import path from "path";

console.log(__dirname);

在我的终端中,我运行

node --experimental-modules index.mjs

我收到以下错误:

(node:3750) ExperimentalWarning: The ESM module loader is experimental.
ReferenceError: __dirname is not defined
at file:///MyFolderPath/node-10/index.mjs:3:21
at ModuleJob.run (internal/modules/esm/module_job.js:106:14)

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    ESM 不是特定于节点的,特定于节点的“全局变量”(例如__dirname 和模块)将不起作用。 import.meta 有望提供合适的替代品。

    来源:GitHub issue

    【讨论】:

      【解决方案2】:

      ES6 模块没有定义__dirname。您可以使用下面这样的代码自己定义它。这假定一个文件系统上下文,而不是一个浏览器。

      import path from 'path';
      const __dirname = path.dirname(new URL(import.meta.url).pathname);
      

      详情请参阅node referenceMDN 中的import.meta

      【讨论】:

        猜你喜欢
        • 2021-03-05
        • 1970-01-01
        • 2021-01-30
        • 2021-07-01
        • 1970-01-01
        • 2020-12-16
        • 2021-08-29
        • 2021-08-03
        • 2020-09-30
        相关资源
        最近更新 更多