Javascript Nodejs“意外令牌”。创建对象时

Javascript Nodejs“意外令牌”。创建对象时,javascript,node.js,Javascript,Node.js,我试图寻找我的问题,但我甚至不知道如何问它。我找了一些类似的问题,但什么也找不到。这就是我的问题 我有两个js文件。第一个是constant.js,它保留HTTP字段名。下面是它的代码片段 module.exports = { USERNAME: 'username' }; 第二个文件是test.js,我想在这个文件中创建一些对象。创建对象时,我希望使用constant.js文件属性名,如下所示: var constant = require('./constant'); var x

我试图寻找我的问题,但我甚至不知道如何问它。我找了一些类似的问题,但什么也找不到。这就是我的问题

我有两个js文件。第一个是constant.js,它保留HTTP字段名。下面是它的代码片段

module.exports = {
    USERNAME: 'username'
};
第二个文件是test.js,我想在这个文件中创建一些对象。创建对象时,我希望使用constant.js文件属性名,如下所示:

var constant = require('./constant');

var x = {
    constant.USERNAME: "test"
};

console.log(x);
当我执行test.js时,我希望在控制台中看到{username:'test'},但我遇到以下错误:

constant.USERNAME: "test"
        ^
SyntaxError: Unexpected token .
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3
我不知道为什么会这样。为什么我不能创建我的对象?任何帮助都将不胜感激


注意:两个文件位于同一文件夹中。没有模块导出错误。当我尝试console.logconstant时,它工作得很好。

对于文字对象表示法,属性名不会被计算。此外,constant.USERNAME是无效的属性名称

如果要使用constant.USERNAME的值作为属性名,则需要使用数组表示法,如下所示:

var x = {};
x[constant.USERNAME] = 'test';
JS对象文字x={…}由名称:值对组成,其中名称是文字,JS不允许。在这里,不能使用其他变量。要实现我认为您想要实现的目标,我会:

x = {};
x[constant.USERNAME] = "test";
您应该使用nodejs 4及更新版本中支持的ECMAScript 2015:

var x = {
    [constant.USERNAME]: "test"
};
或者坚持用普通的旧的:

var x = {};
x[constant.USERNAME] = "test";