是否可以使用 ES6 导入而不创建变量并在一行中执行,类似于 CommonJS?

Is it possible to use ES6 import without creating a variable and execute in a single line, similar to CommonJS?

只是想知道,我是否可以在不创建 "placeholder" 变量的情况下导入 ES6 模块并立即 运行 它?

例如,代替 ES6 的导入创建未使用的 express 变量:

import express from 'express' 
const app = express();

在 CommonJS 中我可以不用它:

const app = require("express")();

这对于一次性导入特别有用,例如 dotenv:

require("dotenv").config();

而不是

import dotenv from 'dotenv'
dotenv.config();
//or
import {} from 'dotenv/config'
config()

我认为 CommonJS 语法更简洁,但似乎 ES6 导入才是未来。

谢谢

不,除了提及占位符(默认导出或导出名称)之外别无他法来导入 ES6 模块。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

在 ES6 中无法做到这一点,但是 a finshed (Stage 4) proposal 可以做到这一点:

(await import('dotenv')).config()

或者,如果目标模块不提供命名导出:

(await import('dotenv')).default.config()

但是,您应该注意 await 只能在异步函数中使用(直到 this another proposal 实现):

(async ()=>{
  (await import('dotenv'))/*.default*/.config()
})()