我试图搜索我的问题,但我甚至不知道如何问它。我看了类似的问题,但我找不到任何东西。所以这是我的问题。
我有两个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.log(constant)
时效果很好。
答案 0 :(得分:3)
如果是文字对象表示法,则不评估属性名称。此外,constant.USERNAME
是无效的属性名称。
如果要使用constant.USERNAME
的值作为属性名称,则需要使用“数组表示法”,如下所示:
var x = {};
x[constant.USERNAME] = 'test';
答案 1 :(得分:3)
JS对象文字(x = { ... }
)由name: value
对组成,其中name
是文字(而JS不允许.
),你不能在这里使用另一个变量为了达到我想你想达到的目标,我会这样做:
x = {};
x[constant.USERNAME] = "test";
答案 2 :(得分:1)
您应该使用ECMAScript 2015中的new syntax(在nodejs 4和更新版本中支持):
var x = {
[constant.USERNAME]: "test"
};
或坚持普通老人:
var x = {};
x[constant.USERNAME] = "test";