Javascript 我可以将alias与NodeJS require函数一起使用吗?

Javascript 我可以将alias与NodeJS require函数一起使用吗?,javascript,node.js,ecmascript-6,commonjs,Javascript,Node.js,Ecmascript 6,Commonjs,我有一个ES6模块,可导出两个常量: export const foo = "foo"; export const bar = "bar"; 我可以在另一个模块中执行以下操作: import { foo as f, bar as b } from 'module'; console.log(`${f} ${b}`); // foo bar 当我使用NodeJS模块时,我会这样写: module.exports.foo = "foo"; module.exports.bar = "bar";

我有一个ES6模块,可导出两个常量:

export const foo = "foo";
export const bar = "bar";
我可以在另一个模块中执行以下操作:

import { foo as f, bar as b } from 'module';
console.log(`${f} ${b}`); // foo bar
当我使用NodeJS模块时,我会这样写:

module.exports.foo = "foo";
module.exports.bar = "bar";
现在,当我在另一个模块中使用它时,我是否可以将导入的变量重命名为ES6模块

const { foo as f, bar as b } = require('module'); // invalid syntax
console.log(`${f} ${b}`); // foo bar

如何重命名NodeJS模块中导入的常量?

我认为这是不可能的,但另一种方法是:

const m = require('module');
const f = m.foo;
const b = m.bar;
可能(使用节点8.9.4进行测试):


当然,只需使用对象分解语法:

 const { old_name: new_name, foo: f, bar: b } = require('module');

是的,一个简单的解构将符合您的请求

而不是: 你可以写:
emitter()
将别名方法
EventEmitter()


只需记住实例化命名函数:
var e=new emitter()
foo
不是直接导出的,它是
exports
的一个属性(我假设
模块
被导出了?),因此您不能将其别名,而不是在
导入
/
要求
中,总之很棒!我应该考虑一下,为了澄清:
const{prevName:newName}=require('../package.json')我翻来覆去,不明白为什么它在几分钟内不起作用。@technogeek1995你才是真正的MVP。登录到SO以感谢您!如果您需要默认导出(类似于
export default foo;
),那么“default”就是您要做的名称:
const{default:newName}=require('module')
 const { old_name: new_name, foo: f, bar: b } = require('module');
var events = require('events');
var emitter = new events.EventEmitter();
const emitter = {EventEmitter} = require('events');