【问题标题】:error while node-gyp rebuildnode-gyp重建时出错
【发布时间】:2014-09-12 14:19:51
【问题描述】:
pi@raspberrypi ~ $ sudo node-gyp rebuild
gyp info it worked if it ends with ok
gyp info using node-gyp@1.0.2
gyp info using node@0.10.31 | linux | arm
gyp info spawn python
gyp info spawn args [ '/usr/local/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/pi/build/config.gypi',
gyp info spawn args '-I',
gyp info spawn args '/usr/local/lib/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/root/.node-gyp/0.10.31/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/root/.node-gyp/0.10.31',
gyp info spawn args '-Dmodule_root_dir=/home/pi',
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 make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/pi/build'
make: *** No rule to make target 'Release/obj.target/binding/src/binding.o', needed by                     'Release/obj.target/binding.node'. Stop.
make: Leaving directory '/home/pi/build'
gyp ERR! build error 
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:810:12)
gyp ERR! System Linux 3.12.22+
gyp ERR! command "node" "/usr/local/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/pi
gyp ERR! node -v v0.10.31
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok

这是我的错误代码。

绑定.gyp

{
"targets": [
    {
    "target_name": "binding",
    "sources": ["src/binding.cc"]
    }
  ]
}

我安装了“npm make”并且 我做'sudo apt-get install python-dev' 然后可能安装了python2.7 我安装'sudo apt-get install gcc' 我不明白

make: Entering directory '/home/pi/build'
make: *** No rule to make target 'Release/obj.target/binding/src/binding.o', needed by     'Release/obj.target/binding.node'. Stop.
make: Leaving directory '/home/pi/build'
gyp ERR! build error 
gyp ERR! stack Error: make failed with exit code: 2

这句话是什么意思? 为什么我做不到?

【问题讨论】:

    标签: node.js rebuild node-gyp


    【解决方案1】:

    您确定路径src/binding.cc 存在吗?听起来目录或文件名有误。

    【讨论】:

      【解决方案2】:

      Node-Gyp README 文档对使用 binding.gyp 不是很明确。

      了解 Node-Gyp 配置 binding.gyp

      NODE-GYP 不知道您的代码结构

      node-gyp 只是为 nodejs 构建任何本机附加包的包,但它不与任何包绑定,因此他们的示例是通用的,并且缺乏将其与包一起使用的细节。

      • 构建自己的代码:

      当您收到错误消息时:

      make: *** No rule to make target Release/obj.target/binding/src/binding.o', needed by Release/binding.node'. Stop
      

      那是因为您使用了他们的通用模板来使其工作。但是使用Binding Gyp,不是为了自己内部的config,而是为了Package modules的config。

      因此,最好将真实模块路径包含在真实模块.cc 文件中,而不是关键字绑定,例如:

      {
        "targets": [
          {
            "target_name": "my-subproject-name",
            "sources": [
              "node_modules/my-subproject-dir/cc/test.cc",
              "node_modules/my-subproject-dir/cc/any-other-cc-file.cc"
            ]
          }
        ]
      }
      

      如果它是项目中您自己的目录,并且需要编译一个或几个文件,这将完全有效。

      • 建筑包代码:

      在构建包代码时,您不需要自己配置 binding.gyp,因为该包带有自己的 node_modules/package-name/binding.gyp,以及一个 build 和 Release 目录,其中包含用于在 node_modules/package-name/build/Release 中的 node-gyp 构建的文件其中包含 .oo.d 文件,用于告诉 node-gyp 如何使用以及如何构建包。

      进入模块目录:

      cd node_modules/package-name
      node-gyp build
      # or execute a js file if any provided like
      node ./install/install.js
      

      所以您甚至不必使用:node-gyp configure,而只需使用 node-gyp build。 有时它会在安装后自动构建包,如果这导致错误,请查看是否可以使用 Env 变量或配置停止自动构建,然后转到目录手动执行。或者寻找包装问题的可能性。

      您可能会在控制台中看到很多警告,但不要担心。如果Process成功,则将创建构建的节点文件:

      node_modules/package-name/build/Release/package-name.node
      

      【讨论】:

        【解决方案3】:

        已经有一段时间了,但我刚刚遇到了同样的问题,结果是nodejs 版本。

        当需要node-gypnode-sass 在需要降级节点版本的较旧版本中时,基本上它使用的是较新版本的nodejs

        希望项目中有一个version list,可以轻松将nodejs 版本从17 更改为14

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-09
          • 1970-01-01
          • 2023-03-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-21
          • 2014-02-05
          相关资源
          最近更新 更多