Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取脚本';V8中的源文件名_Javascript_C++_C++11_V8 - Fatal编程技术网

Javascript 如何获取脚本';V8中的源文件名

Javascript 如何获取脚本';V8中的源文件名,javascript,c++,c++11,v8,Javascript,C++,C++11,V8,我想在全局函数中获取脚本的原始文件名 我尝试了以下代码,但filename.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 =

我想在全局函数中获取脚本的原始文件名

我尝试了以下代码,但filename.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();
使用名称空间v8;
手柄镜手柄镜;
//定义全局函数“func”
Handle global=ObjectTemplate::New();
自动func_name=v8::String::New(“func”);
auto func=v8::FunctionTemplate::新建(
[](常量v8::参数和参数)->v8::句柄{
//我想在这里找到文件名。
自动文件名=args.Callee()->GetScriptOrigin().ResourceName();
std::cout 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();
    });
auto func=v8::FunctionTemplate::New(
[](常量v8::参数和参数)->v8::句柄{
//获取文件名
自动文件名=v8::StackTrace::CurrentStackTrace(1,v8::StackTrace::KScript名称)
->GetFrame(0)->GetScriptName();

std::我可以自己解决这个问题,但因为声誉问题,我现在不能发布答案。我会稍后发布。