You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装jsonski时node-gyp build失败,寻求解决方案

安装JSONSki时node-gyp build失败的问题排查与解决建议

问题现象

执行node-gyp configure可正常完成:

ubuntu@Ubuntu-22:~/JSON/JSONSki$ node-gyp configure
gyp info it worked if it ends with ok
gyp info using node-gyp@9.3.1
gyp info using node@14.21.3 | linux | x64
gyp info find Python using Python version 3.10.6 found at "/usr/bin/python3"
gyp info spawn /usr/bin/python3
gyp info spawn args [
gyp info spawn args   '/home/ubuntu/.nvm/versions/node/v14.21.3/lib/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/ubuntu/JSON/JSONSki/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/ubuntu/.nvm/versions/node/v14.21.3/lib/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/ubuntu/.cache/node-gyp/14.21.3/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/ubuntu/.cache/node-gyp/14.21.3',
gyp info spawn args   '-Dnode_gyp_dir=/home/ubuntu/.nvm/versions/node/v14.21.3/lib/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/home/ubuntu/.cache/node-gyp/14.21.3/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/home/ubuntu/JSON/JSONSki',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp info ok 

但执行node-gyp build时失败,错误信息如下:

ubuntu@Ubuntu-22:~/JSON/JSONSki$ node-gyp build
gyp info it worked if it ends with ok
gyp info using node-gyp@9.3.1
gyp info using node@14.21.3 | linux | x64
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/ubuntu/JSON/JSONSki/build'
make: *** No rule to make target 'Release/obj.target/binding//home/ubuntu/JSON/JSONSki/src/JSONPathParser.o', needed by 'Release/obj.target/binding.node'.  Stop.
make: Leaving directory '/home/ubuntu/JSON/JSONSki/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/ubuntu/.nvm/versions/node/v14.21.3/lib/node_modules/node-gyp/lib/build.js:203:23)
gyp ERR! stack     at ChildProcess.emit (events.js:400:28)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:285:12)
gyp ERR! System Linux 5.19.0-35-generic
gyp ERR! command "/home/ubuntu/.nvm/versions/node/v14.21.3/bin/node" "/home/ubuntu/.nvm/versions/node/v14.21.3/bin/node-gyp" "build"
gyp ERR! cwd /home/ubuntu/JSON/JSONSki
gyp ERR! node -v v14.21.3
gyp ERR! node-gyp -v v9.3.1
gyp ERR! not ok 

相关配置文件

binding.gyp

{
  'targets': [
    {
      "target_name": "binding",
      "sources": [ '/home/ubuntu/JSON/JSONSki/src/JSONPathParser.cpp',
        '/home/ubuntu/JSON/JSONSki/src/JSONPathParser.h'
        '/home/ubuntu/JSON/JSONSki/src/QueryAutomaton.h'
        '/home/ubuntu/JSON/JSONSki/src/QueryProcessor.cpp'
        '/home/ubuntu/JSON/JSONSki/src/QueryProcessor.h'
        '/home/ubuntu/JSON/JSONSki/src/RecordLoader.cpp'
        '/home/ubuntu/JSON/JSONSki/src/RecordLoader.h'
        '/home/ubuntu/JSON/JSONSki/src/Records.h']
    }
  ],
  'include_dirs': ["<!(node -p \"require('node-addon-api').include_dir\")"],
  'defines': [ 'NODE_ADDON_API_ENABLE_MAYBE' ],
}

package.json

{
  "name": "ubuntu",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "cmake-js": "^7.2.1",
    "node-addon-api": "^6.0.0",
    "node-gyp": "^9.3.1",
    "nopt": "^7.0.0"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "install": "node-gyp rebuild"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "gypfile": true
}

已尝试的无效操作

  • 通过nvm安装并测试了Node.js 14至19的所有版本
  • 尝试过社区常见的node-gyp构建失败解决方案(包括依赖安装、环境变量配置等)

系统环境

  • Python 3.10.6
  • gcc 11.3.2
  • Ubuntu 22.04(Linux 5.19.0-35-generic)

解决建议

1. 修复binding.gyp的语法错误

核心问题是binding.gyp中sources数组的元素之间缺少逗号分隔,导致GYP解析时把多个文件路径拼接成了一个错误的路径(比如/home/ubuntu/JSON/JSONSki/src/JSONPathParser.h/home/ubuntu/JSON/JSONSki/src/QueryAutomaton.h),最终make找不到对应的目标文件。

修改后的binding.gyp:

{
  'targets': [
    {
      "target_name": "binding",
      "sources": [ 
        '/home/ubuntu/JSON/JSONSki/src/JSONPathParser.cpp',
        '/home/ubuntu/JSON/JSONSki/src/JSONPathParser.h',
        '/home/ubuntu/JSON/JSONSki/src/QueryAutomaton.h',
        '/home/ubuntu/JSON/JSONSki/src/QueryProcessor.cpp',
        '/home/ubuntu/JSON/JSONSki/src/QueryProcessor.h',
        '/home/ubuntu/JSON/JSONSki/src/RecordLoader.cpp',
        '/home/ubuntu/JSON/JSONSki/src/RecordLoader.h',
        '/home/ubuntu/JSON/JSONSki/src/Records.h'
      ]
    }
  ],
  'include_dirs': ["<!(node -p \"require('node-addon-api').include_dir\")"],
  'defines': [ 'NODE_ADDON_API_ENABLE_MAYBE' ],
}

2. 优化sources配置(可选)

通常node-gyp的sources只需要包含编译所需的.cpp/.c源文件,头文件会通过代码中的#include自动被编译器识别,无需手动加入sources数组。可以简化配置:

"sources": [ 
  '/home/ubuntu/JSON/JSONSki/src/JSONPathParser.cpp',
  '/home/ubuntu/JSON/JSONSki/src/QueryProcessor.cpp',
  '/home/ubuntu/JSON/JSONSki/src/RecordLoader.cpp'
]

3. 清理旧构建文件后重新编译

执行以下命令彻底清理旧构建产物,再重新编译:

rm -rf build/
node-gyp clean
node-gyp configure build

内容的提问来源于stack exchange,提问作者Alan Zink

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 02:19:57