node.js - 从包含“require”的 C++ 插件中运行 JS 代码
问题描述
我想从 C++ node.js 插件中运行 JS 代码。
我尝试的是这样的:
// addon C++ snipplet (just added to the simple example addon code
static NAN_METHOD(RunScript) {
MyObject* obj = ObjectWrap::Unwrap<MyObject>(info.Holder());
v8::Local<v8::String> s = info[0]->ToString();
v8::Local<UnboundScript> script = Nan::New<UnboundScript>(s).ToLocalChecked();
MaybeLocal<v8::Value> result = Nan::RunScript(script);
info.GetReturnValue().Set(result.ToLocalChecked());
}
当我从 JS 加载这个插件时,我可以运行简单的脚本:
// JS code
var OB = require('./build/Debug/objectwraphandle.node')
var obj1 = new OB.MyObject(42)
var returns = obj1.runScript("2+3");
console.log("returned: " + returns);
// ==> writes out 5, as expected
但是当我写这个时:
// JS code
var OB = require('./build/Debug/objectwraphandle.node')
var obj1 = new OB.MyObject(42)
var returns = obj1.runScript("var express = require('express');")
我得到:
FATAL ERROR: v8::ToLocalChecked Empty MaybeLocal.
1: node::Abort() [node]
2: 0x565373d379b1 [node]
3: v8::Utils::ReportApiFailure(char const*, char const*) [node]
4: v8::MaybeLocal<v8::UnboundScript>::ToLocalChecked()
[/home...objectwraphandle.node]
5: MyObject::RunScript(Nan::FunctionCallbackInfo<v8::Value> const&)
[/home/.../objectwraphandle.node]
6: 0x7f493bc79dc6 [/home/.../objectwraphandle.node]
7: v8::internal::FunctionCallbackArguments::Call(void (*)
(v8::FunctionCallbackInfo<v8::Value> const&)) [node]
我在这里做错了什么?为什么我想要运行的 JS 片段不包含“require”?调用“console.log”工作正常。(如果还有其他限制,我目前没有看到)
解决方案
推荐阅读
- node.js - Firebase 云函数 subscribeToTopic 超时
- ios - 接管 UICollectionView 在 tvOS 上完全滚动
- visual-studio-code - 突然之间,VSCode 在保存时取消了 XML 的格式
- r - 如何在 r 中选择最佳估算数据进行进一步分析
- java - 为什么 ssh-keygen 不输出 32 个字节而是输出 1612 个字符?
- java - 是否可以使 Android 应用程序和 Cordova 应用程序通过 Wi-Fi Direct 进行通信?
- ruby - 如何使用 ruby 驱动程序根据时间戳过滤 mongo
- r - 带有 ping 的反应式仪表导致 R 闪亮
- python-3.x - 图片未加载到由 azure 函数生成的 HTML 文件中
- networking - “ERR_CONNECTION_TIMED_OUT”背后的原因可能是什么?