ES6 作为别名导入的 CommonJS 替代品

CommonJS alternative to ES6's importing as alias

ES6 可以导入导出作为别名,像这样;

import express from 'express'
import { express as playground } from 'graphql-playground/middleware'

有没有其他方法可以使用 CommonJS require('something') 来做到这一点?或者如果以 CommonJS 方式完成,则可以规避上述声明问题?

这会引发错误。

const express = require('express')
const express = require('graphql-playground/middleware')

// SyntaxError: Identifier 'express' has already been declared

CommonJS 实际上只是为变量赋值,您可以随意命名变量:

const express = require('express');
const playground = require('graphql-playground/middleware').express;

对于非默认导出(module.export = var),您还可以使用常规解构语法作为别名:

const {
  originName: newNameInFile
} = require('foo.js')