1

我正在尝试编译以下 MWE,基本上取自官方 Node.js 文档

#include<v8.h>
#include<node.h>

using namespace v8;

Handle<Value> Method (const Arguments& _args) {
    HandleScope Scp;
    return Scp.Close (String::New ("world"));
}

void Initialize (Handle<Object> _target) {
    _target->Set (
        String.NewSymbol ("hello"),
        FunctionTemplate::New (Method)->GetFunction ()
    );
}

NODE_MODULE ("Hello", Initialize)

对应binding.gyp文件如下:

{
    "targets": [
        {
            "target_name": "hello",
            "sources": ["hello.cpp"]
        }
    ]
}

当我尝试运行时node-gyp configure,我收到以下错误:

$ node-gyp configure
info it worked if it ends with ok
info downloading http://nodejs.org/dist/v0.6.18/node-v0.6.18.tar.gz
ERR! Error: EXDEV, link '/usr/lib/nodejs/node-gyp/legacy/tools/gyp/pylib/gyp/easy_xml.pyc'
ERR! not ok
$

我正在运行 64 位版本的 Fedora 17。这是输出uname -a

Linux localhost.localdomain 3.5.5-2.fc17.x86_64 #1 SMP Wed Oct 3 13:20:37 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

以下是更多系统信息:

$ rpm -q nodejs
nodejs-0.6.18-1.fc17.x86_64
$ rpm -q node-gyp
node-gyp-0.4.1-2.fc17.noarch

在此先感谢您的帮助。

4

1 回答 1

2

我在我的 64 位 FC16 系统上跟踪了这样的问题(以及相关的 EPERM 而不是 EXDEV)到旧版本的 node-gyp 试图将文件从系统安装位置(在根文件系统上)硬链接到 ~/ .node-gyp 缓存(在不同的文件系统上)。

这个问题在后来的 node-gyp 版本中得到了修复。

对我来说,解决方案是从通过 tchol.org RPM repo 分发的“古老”节点和 node-gyp 及其 0.6 RPM 到当前版本的 node (0.8.12),它捆绑了自己的 npm 和 node-gyp 并且不'这里没有列出错误。

于 2012-10-25T17:40:33.513 回答