我是 NodeJS 的新手,运行节点应用程序时遇到以下问题:
andrea@ubuntu:~/Documents/XXX/custom-dashboard-be$ npm run dev
> custom-dashboard-be@1.6.0 dev /home/andrea/Documents/XXX/custom-dashboard-be
> cross-env NODE_ENV=development nodemon src/index.js
[nodemon] 2.0.7
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/index.js`
/home/andrea/Documents/XXX/custom-dashboard-be/src/utils/esMapper.js:29
if(data.result && data.result.body && data.result.body?.aggregations["2"]?.buckets.length > 0) {
^
SyntaxError: Unexpected token .
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/home/andrea/Documents/XXX/custom-dashboard-be/src/controllers/elastic.controller.js:5:109)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
[nodemon] app crashed - waiting for file changes before starting...
错误似乎出现在这个 esMapper.js 类的第 29 行,也就是这个方法的第一个 if 语句:
const esSudoEventsAndHostnamesMapper = async (data) => {
if(data.result && data.result.body && data.result.body?.aggregations["2"]?.buckets.length > 0) {
let aggregations = data.result.body.aggregations["2"].buckets;
aggregations.map((event) => {
let totalCount = event.doc_count;
event["3"].buckets.map(nestedEvent => {
nestedEvent.percentage = ((nestedEvent.doc_count / totalCount) * 100).toFixed(2);
})
})
data.result.body.aggregations["2"].buckets = aggregations;
}
return data;
}
为什么?我该如何尝试解决此问题?
答案 0 :(得分:2)
您的问题似乎是在不受支持的节点版本中使用了 optional chaining operator,这很可能是 (<14
)。请记住,只有节点 14 及更高版本可以支持这一点。
但我知道您可以使用选项 (--harmony
) 来启用一些新功能,但我之前还没有测试过。
简而言之,解决方案要么更新您的节点版本 >=14
,要么尝试使用 node --harmony src/index.js
。