【问题标题】:Executing node-jq throws an event.js error执行 node-jq 会抛出 event.js 错误
【发布时间】:2022-01-11 14:08:54
【问题描述】:

我创建了一个节点应用程序,用于获取 json 格式的日志文件,在处理数据后,我们创建一个 csv 文件。我在应用程序中使用以下软件包

"dependencies": {
    "bluebird":"^3.7.2",
    "js-yaml":"^4.1.0",
    "json2csv":"^5.0.6",
    "node-jq": "^1.12.0",
    "yargs": "^17.0.1"
}

该应用在过去 6 个月内一直正常运行,并且代码没有任何变化。我们在 5 天前进行了计划部署,但此后它没有生成报告,当我们尝试生成文件时出现此错误。

events.js:377 投掷者; // 未处理的“错误”事件 ^

Error: spawn C:\reporting-app\node_modules\node-jq\bin\jq ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:274:19)
at onErrorNT (internal/child_process.js:469:16)
at processTicksAndRejections (internal/process/task_queues.js:82:21)

Emitted 'error' event on ChildProcess instance at:
at Process.ChildProcess._handle.onexit (internal/child_process.js:280:12)
at onErrorNT (internal/child_process.js:469:16)
at processTicksAndRejections (internal/process/task_queues.js:82:21) {
errno: -4058,
code: 'ENOENT',
syscall: 'spawn C:\\reporting-app\\node_modules\\node-jq\\bin\\jq',
path: 'C:\\reporting-app\\node_modules\\node-jq\\bin\\jq',
spawnargs: [
'--slurp',
'[ .[] .logs[] ] | map(select(.context.recordID != "12345")) | unique_by(.context.ID) | map(select(.context.ID != null)) | map({ ID: .context.ID, timestamp: .timestamp, kiosk: .context.recordID, appTransactionId: .context.appTransactionId })'
]}

我认为当我们尝试使用 node-jq.run 方法时会出现错误(见下文)

execute(source) {
    return jq.run(this.query, source, {
        input: 'string',
        slurp: true,
    });
}

我们将不胜感激。

【问题讨论】:

  • 如果你真的卡住了,可能最简单的方法是获取你传入的字符串,并使用JSON.parse 将其转换为 js 对象,然后将您的查询转换为过滤和选择。我的建议的一个问题是它会同步发生,所以如果你正在运行一个 web 服务器,并且它是一个大操作,它可能会锁定事情
  • 你说得对,我觉得这是现在唯一的出路。

标签: node.js spawn


【解决方案1】:

我不知道到底是什么问题,但我尝试将 node.js 的版本降级到旧版本(在构建和部署应用程序时使用)。我删除了 node_modules 和 package-lock.json 文件。是否安装了 npm 并且该应用程序开始在本地运行。我将 package-lock.json 文件提升到服务器,服务器也开始工作了。

我有一个后续问题。在过去的 5 个月里,代码没有任何变化。甚至没有 package 或 package-lock.json 文件。但是,每次使用此应用生成报告时,我们都会执行 npm install。开发人员说他们没有更新服务器上的节点版本。有谁知道这个节点的降级可能解决了这个问题吗?

【讨论】:

    猜你喜欢
    • 2018-01-14
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多