是否可以为浏览器捆绑Node插件?

时间:2020-08-06 15:08:06

标签: c++ node.js browser browserify node.js-addon

我有一个非常简单的C ++节点插件。它使用NODE_SET_METHOD节点函数导出2种方法。他们两个都只返回一个字符串和/或在控制台上打印一些内容。

void Method1(const FunctionCallbackInfo<Value>& args) {
    Isolate* isolate = args.GetIsolate();
    args.GetReturnValue().Set(String::NewFromUtf8(
        isolate, "world"));
}

void Method2(const FunctionCallbackInfo<Value>& args) {
    Isolate* isolate = args.GetIsolate();
    printf("Testing testing.\n");
    args.GetReturnValue().Set(String::NewFromUtf8(isolate, "hello there"));
}

void Initialize(Local<Object> exports) {
    NODE_SET_METHOD(exports, "hello", Method1);
    NODE_SET_METHOD(exports, "welcome", Method2);
}

构建工作正常。通过Node从JavaScript调用这些函数也会返回并打印出期望值。我正在努力的是将整个东西捆绑在一起(使用browserify),以便可以从浏览器中调用相同的功能。 Browserify拒绝构建。我不断收到此错误消息:

> npx browserify index.js
Error: Can't walk dependency graph: Cannot find module './build/Release/hello' from 'F:\workspace\c\addon\hello\index.js'
    required by F:\workspace\c\addon\hello\index.js
    at F:\workspace\c\addon\hello\node_modules\resolve\lib\async.js:136:35
    at load (F:\workspace\c\addon\hello\node_modules\resolve\lib\async.js:155:43)
    at onex (F:\workspace\c\addon\hello\node_modules\resolve\lib\async.js:180:17)
    at F:\workspace\c\addon\hello\node_modules\resolve\lib\async.js:15:69
    at FSReqCallback.oncomplete (fs.js:166:21)

我开始认为不可能将节点附加组件捆绑在一起供前端使用。但是,有没有一种方法可以解决此问题,并且能够为浏览器构建包含节点附加组件?也许是写我的index.js之类的一种特殊方式?还是有其他方法可以创建可避免此问题的插件?

1 个答案:

答案 0 :(得分:0)

以下存储库提供了一组很好的节点本机附加示例

node-addon-examples

节点插件不能与浏览器捆绑;返回值方案在

中说明

hello_world example