【发布时间】:2016-06-03 05:13:06
【问题描述】:
我对 JavaScript 很陌生,最近一直在为导入而苦苦挣扎。有一件事我无法理解。
在可能使用 npm 安装的旧节点模块(主要是在 ES6 之前出现的那些)中,例如 express,通常没有定义默认导出。
我的 IDE (WebStorm) 用 默认导出未在导入的模块中声明通知标记以下行。
import express from 'express';
可以通过尝试将整个模块导入为别名来规避此消息
import * as express from 'express';
隐式告诉我的 IDE 只导入所有内容并将其命名为 express,但是这样做会在尝试在下一行实例化应用程序时导致 express is not a function 错误。
const app = express();
特别是原始导入(没有别名)有效。
当没有定义默认导出时,使用不带别名的 import 语句究竟导入了什么?我认为这是整个模块,但似乎并非如此。
【问题讨论】:
-
这很可能是您的 IDE 的问题,它不知道您的模块加载器如何处理 ES6 之前的模块。如果它有效,您应该使用它,然后关闭通知或找到一种方法来声明链接模块的导出。
-
@Bergi IDE 通知不是问题,也不是问题的问题。正如我的 IDE 所指出的,当没有声明此类导入时,我对默认导入的内容更感兴趣。我可能应该说我正在使用 webpack 和 babel 和 es-2015 预设来将模块打包成一个包。我现在没有时间,但我会在有时间时编辑问题。
-
@DavidPacker WebStorm 在 Setting > Languages & Frameworks > JavaScript > Libraries > Download > express > Download and安装
标签: javascript import ecmascript-6