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

时间:2016-07-14 06:32:20

标签: javascript node.js

我试图搜索我的问题,但我甚至不知道如何问它。我看了类似的问题,但我找不到任何东西。所以这是我的问题。

我有两个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)时效果很好。

3 个答案:

答案 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";