我可以在NodeJS require函数中使用别名吗?

xMo*_*ort 23 javascript commonjs node.js ecmascript-6

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

export const foo = "foo";
export const bar = "bar";
Run Code Online (Sandbox Code Playgroud)

我可以在另一个模块中执行以下操作:

import { foo as f, bar as b } from 'module';
console.log(`${f} ${b}`); // foo bar
Run Code Online (Sandbox Code Playgroud)

当我使用NodeJS模块时,我会这样写:

module.exports.foo = "foo";
module.exports.bar = "bar";
Run Code Online (Sandbox Code Playgroud)

现在,当我在另一个模块中使用它时,我能否以某种方式重命名导入的变量,就像使用ES6模块一样?

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

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

Jon*_*lms 42

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

 const { foo: f, bar: b } = require('module');
Run Code Online (Sandbox Code Playgroud)

  • 为了澄清起见:const {prevName:newName} = require('../ package.json');`我将其翻转了一下,无法弄清楚为什么它在几分钟之内不起作用。 (7认同)
  • 伟大的!我应该考虑过。 (2认同)
  • 如果您需要默认导出(类似于“export default foo;”),“default”就是名称,因此您可以这样做:“const {default: newName } = require('module');” (2认同)

bar*_*ski 7

它是可能的(使用Node 8.9.4测试):

const {foo: f, bar: b} = require('module');
console.log(`${f} ${b}`); // foo bar
Run Code Online (Sandbox Code Playgroud)