链接运算符在 Express 应用程序中抛出错误

chaining operator throwing error in express app

我正在尝试在我的 express 应用程序中使用可选的链接运算符 (?.) - 每当我尝试时它都会抛出错误。

if (user.address?.postal_code.length > 0 ) {
                 ^

SyntaxError: Unexpected token '.'
    at wrapSafe (internal/modules/cjs/loader.js:1053:16)

我已经尝试了所有变体

user?.address?.postal_code?.length
user?.address?.postal_code.length
user?.address.postal_code.length


"engines": {
        "node": "10.16.0",
        "npm": "6.9.0"
    },
    "dependencies": {
        "body-parser": "^1.19.0",
        "express": "^4.17.1",
        ...
    }

您有 2 个选择

  1. 升级您的节点版本。只有 these 版本支持可选链接。如您所见,只有 Node 14.5+ 支持可选链接
  2. 如果您想支持旧版本(例如 12),则需要转译您的代码。看看Babel or TypeScript。这些程序获取您的代码并将其转换为与旧 Node 版本兼容的代码。例如,您的代码:
if (user.address?.postal_code.length > 0 ) {
    // Do stuff
}

变成:


var _user$address;

if (((_user$address = user.address) === null || _user$address === void 0 ? void 0 : _user$address.postal_code.length) > 0) {
    // Do stuff
}