cuốn sách gpt4 ai đã làm

javascript — Nhập Mô-đun từ 'mô-đun' nhập khi không xác định xuất mặc định? Tại sao nó khác với import * as Module?

In lại Tác giả: Hồ Xil 更新时间:2023-11-01 02:43:06 29 4
mua khóa gpt4 Nike

我是 JavaScript 的新手,最近一直在努力处理导入问题。有一件事我无法理解。

在较旧的节点模块(主要是那些在 ES6 之前出现的模块)中,可以使用 npm 安装,例如 express,通常没有定义默认导出。

我的 IDE (WebStorm) 将以下行标记为 Default export is not declared in the imported module 通知。

import express from 'express';

可以通过尝试将整个模块作为别名导入来规避此消息

import * as express from 'express';

隐式告诉我的 IDE 只导入所有内容并将其命名为 express,但是这样做会导致在尝试实例化应用程序时出现 express is not a function 错误下面一行。

const app = express();

特别是原始导入(没有别名)有效。

当没有定义默认导出时,使用不带别名的导入语句究竟导入了什么?我会认为它是整个模块,但事实并非如此。

câu trả lời hay nhất

What does import Module from 'module' import when no default export is defined?

没有。事实上,instantiating the module当导入的内容未从导入的模块导出或多次导出时,将抛出 SyntaxError.

Why is it different from import * as Module?

因为 import * 只是导入一个 module namespace object将导出作为属性。如果您不导出任何内容,它将是一个空对象。

In older, pre-ES6 node modules usually no default export is defined.

这意味着您不能将它们作为 ES6 模块导入。不过,您的 IDE 似乎预料到了这一点并发出了警告。

那么如果您在 import 声明中引用它们会发生什么?你的模块加载器可能会用它做任何事情,并且 HostResolveImportedModulesẽ trở lại module record那不是 source text "ES6 module" record - 即它可能会使用 CommonJS 模块做任何依赖于实现的事情。

关于javascript - 当没有定义默认导出时,import Module from 'module' 会导入什么?为什么它与 import * as Module 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35542427/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress