NodeJS 语法错误:意外的标记“.”

2023-12-02

Node JS 和 NPM 初学者。以下代码引发语法错误,无法找出问题所在。

节点版本:v12.18.3 NPM版本:7.15.1

Error

LayerObj.options?.["displayName"] != undefined
                       ^

SyntaxError: Unexpected token '.'
    at wrapSafe (internal/modules/cjs/loader.js:1053:16)
    at Module._compile (internal/modules/cjs/loader.js:1101:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Module.require (internal/modules/cjs/loader.js:1025:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/Applications/MAMP/htdocs/nft-generators/hashlips_art_engine-main/index.js:2:39)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)

Code

const layersSetup = (layersOrder) => {
  const layers = layersOrder.map((layerObj, index) => ({
    id: index,
    elements: getElements(`${layersDir}/${layerObj.name}/`),
    name:
      layerObj.options?.["displayName"] != undefined
        ? layerObj.options?.["displayName"]
        : layerObj.name,
    blend:
      layerObj.options?.["blend"] != undefined
        ? layerObj.options?.["blend"]
        : "source-over",
    opacity:
      layerObj.options?.["opacity"] != undefined
        ? layerObj.options?.["opacity"]
        : 1,
    bypassDNA:
      layerObj.options?.["bypassDNA"] !== undefined
        ? layerObj.options?.["bypassDNA"]
        : false,
  }));
  return layers;
};

可选链接(?.)已添加到 Node.js 14 中,并且是不能直接获得在节点 12 中。

这 ?。运算符就像 .链接运算符,不同之处在于,如果引用为空(空或未定义),则表达式会短路并返回未定义的值,而不是导致错误。当与函数调用一起使用时,如果给定函数不存在,则返回 undefined。

使用更新版本的 Node 或使用 Node 12 兼容代码。

Node.js v14.0 中的新 JS 功能讨论 Node 14 中的一些新语言结构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJS 语法错误:意外的标记“.” 的相关文章

随机推荐