【发布时间】:2019-01-17 10:36:10
【问题描述】:
here 中的代码如何工作 - 为什么?对象符号似乎不满足。我觉得它相当混乱。这在 @Mozilla 或 @NodeJS 文档中指的是什么?
文件expose.js:
module.exports = {__dirname};
文件use.mjs:
import expose from './expose.js';
const {__dirname} = expose;
那么这实际上不应该起作用吗,只从对象中导入键,在use.mjs 中? (这不是......但上面有!)
import {__dirname} from './expose.js';
编辑:我通常会执行import electron, {ipcMain, session} from 'electron'; 之类的操作 - 导入整个名称空间,然后根据需要直接导入特定部分。以及import {inspect} from 'util';。所以这里应该有解构的地方
edit 2:see this post,来自下面 willascend 提到的线程。 No. 部分解释了我的问题中的问题所在。
【问题讨论】:
-
您只是在询问
{__dirname}语法吗?在这种情况下,这是 ECMA 用于创建对象的新速记语法。搜索“速记”here。{a}将创建一个对象,其键为"a",其值为a的任何值 -
而
const {__dirname} = expose;正在解构为局部变量__dirname?那么为什么最后一次导入不起作用呢? -
嗯,
__dirname是一个特殊的关键字,所以这样导入可能会有些困难。你得到什么错误?尝试导入所有的expose.js,看看对象包含什么 -
在 .mjs 中没有预先设置魔法全局变量。所以没有
__dirname。这就是为什么需要这个脚本。问题仍然存在。 -
@BananaAcid,请看我的回答。我认为它解释了这里发生的事情。
标签: javascript node.js node-modules babeljs es6-modules