如何在 V8 中获取脚本的源文件名
How to get script's origin filename in V8
我想在全局函数中获取脚本的源文件名。
我尝试了以下代码,但文件名。IsEmpty() 返回 true。
using namespace v8;
HandleScope handle_scope;
// Define Global Function 'func'
Handle<ObjectTemplate> global = ObjectTemplate::New();
auto func_name = v8::String::New("func");
auto func = v8::FunctionTemplate::New(
[](const v8::Arguments& args) -> v8::Handle<v8::Value>{
// I want to get Filename here.
auto filename = args.Callee()->GetScriptOrigin().ResourceName();
std::cout << filename.IsEmpty() << std::endl;
return v8::Undefined();
});
global->Set(func_name, func);
auto context = Context::New(nullptr, global);
Context::Scope context_scope(context);
auto source = String::New("func()");
// Set Filename
auto filename = String::New("abc.js");
auto script = v8::Script::Compile(source, filename);
script->Run();
context.Dispose();
是否有正确的方法来访问脚本的源文件名?
我自己解决:
auto func = v8::FunctionTemplate::New(
[](const v8::Arguments& args) -> v8::Handle<v8::Value>{
// Get Filename
auto filename = v8::StackTrace::CurrentStackTrace(1,v8::StackTrace::kScriptName)
->GetFrame(0)->GetScriptName();
std::cout << *v8::String::AsciiValue(filename) << std::endl;
return v8::Undefined();
});
相关文章:
- 如何通过cpp程序运行shell脚本
- 为测试目标创建具有不同源文件夹的文件
- 在程序中编写脚本来编写和编译代码
- 将图像添加到资源文件夹UWP C++
- 如何在c++中使用system()来运行包含空格的python脚本
- 在cygwin中运行c++脚本时发生错误
- 如何将真正的字符串从python c-api转换为python脚本
- 视觉工作室项目.提取源文件夹名称
- 用于将C++代码转换为 Web 程序集的脚本未终止
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 生成一个生成文件,该生成文件使用Automake在一个步骤中编译和链接所有源文件
- make 命令如何避免重新编译未更改的源文件?
- C++两个源文件之间共享的枚举的静态实例
- 在原子中使用犰狳与脚本
- 如何使用Qt 3D库加载和显示搅拌机.obj源文件场景
- 我适合在我的构建系统中使用 shell 脚本而不是AX_CHECK_COMPILE_FLAG吗?
- CANoe - 无法在 CAPL 脚本中打开.dll
- 获取对源文件中特定函数的所有调用并生成其他文件(使用 C、C++预处理器或脚本)
- 在 cmake 中创建一个宏脚本,并在源文件中调用该宏
- 在程序源文件中使用脚本变量OMP_NUM_THREADS