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

Nodejs "Unexpected token ." when creating object

本文关键字:创建对象 意外令牌 令牌 意外 Nodejs      更新时间:2023-09-26

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

我有两个js文件。第一个是常量.js它保留HTTP字段名称。这是它的代码片段

module.exports = {
    USERNAME: 'username'
};

第二个文件是test.js我想在这个文件中创建一些对象。在创建对象时,我想使用常量.js文件属性名称,如下所示:

var constant = require('./constant');
var x = {
    constant.USERNAME: "test"
};
console.log(x);

当我执行测试时.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)它工作得很好。

JS对象文字(x = { ... })由name: value对组成,其中name是文字(JS不允许在其中使用.),并且您不能在此处使用其他变量。为了实现我认为你想要实现的目标,我会做:

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

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

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

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

你应该使用 ECMAScript 2015 中的新语法(在 nodejs 4 及更高版本中支持):

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

或坚持使用普通的旧:

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