问题描述 在执行grunt 命令时候报错 contextify::ContextifyScript::New(const FunctionCallbackInfo<v8::Value> &): Assertion `args[1]->IsString()' failed. 解决 1)安装Gulp 4并升级您的gulpfile.js更多关于更改的信息可以在本文中找到 或者 2)将node.js版本降级到LTS 8.x,直到Gulp 4作为默认npm包发布为止. 自己选择的是node…
ylbtech-V8:V8(Javascript引擎) Lars Bak是这个项目的组长,目前该JavaScript引擎已用于其它项目的开发.第一个版本随着第一个版本的Chrome于2008年9月2日发布. 1.返回顶部 1. Lars Bak是这个项目的组长,目前该JavaScript引擎已用于其它项目的开发.第一个版本随着第一个版本的Chrome于2008年9月2日发布.   中文名:V8 开    发:丹麦Google开发 类    型:开源JavaScript引擎 用    在:Goog…
我们平时在开发部署 Node.js 应用的过程中,对于应用进程启动的耗时很少有人会关注,大多数的应用 5 分钟左右就可以启动完成,这个过程中会涉及到和集团很多系统的交互,这个耗时看起来也没有什么问题. 目前,集团 Serverless 大潮已至,Node.js serverless-runtime 作为前端新研发模式的基石,也发展的如火如荼.Serverless 的优势在于弹性.高效.经济,如果我们的 Node.js FaaS 还像应用一样,一次部署耗时在分钟级,无法快速.有效地响应请求,甚至在…
本地安装kong-dashbord执行npm run build 报如下错误 gulp[]: ../src/node_contextify.cc::]->IsString()' failed. : 0x100038d1f node::Abort() [/usr/local/bin/node] : 0x100037e19 node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, char const*, int, v8::Local&l…
全面掌握Node命令选项 译者按:作为Node.js开发者,有必要全面了解一下节点命令的所有选项,这样在关键时刻才能得心应手. 原文:掌握Node.js的CLI和命令行选项 译者:Fundebug 为了保证可读性,本文采用意译而非直译. 节点命令有很多选项,可以用于调试代码.这些博客全面介绍了Node命令,可以提高大家的工作效率. 查看Node命令选项 使用人命令可以获取Node命令的所有选项: $ man节点   用法:node [options] [ -e script | script.j…
前段时间我们在实现CanTK-Runtime时,也曾在V8基础上模拟过浏览器的LocaleStorage功能,其实现非常简单:每个domain的数据使用的单独文件存储,因为同一时间只有一个游戏运行,所以文件操作只是放到了后台线程执行.但是Chrome里的实现就非常复杂了,它主要包括四部分: 0.根据IDL文件产生出来的代码,称为Binding代码(gen/blink/bindings/modules/v8/V8Storage.cpp).这些代码是JS与C++之间的桥梁,JS调用C++时传递过来的…
导语:当Javascript的性能需要优化,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项目中进行使用.下面有个列表,你可能对它们的名字很熟悉: node-microtime: 扩展Javascript的时间精度 node-inspector:进行调试 v8-profiler:性能及内存使用分析 通常,我们开发原生Node.js模块包括但不仅限于以下原因: 对性能有比较苛刻要求的应用.尽…
导语:当Javascript的性能遭遇瓶颈,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项目中进行使用.下面有个列表,你可能对它们的名字很熟悉: node-microtime: 扩展Javascript的时间精度 node-inspector:进行调试 v8-profiler:性能及内存使用分析 通常,我们开发原生Node.js模块包括但不仅限于以下原因: 对性能有比较苛刻要求的应用.尽…
声明:本文主要翻译自node.js addons官方文档.部分解释为作者自己添加. 编程环境: 1. 操作系统 Mac OS X 10.9.51. node.js v4.4.22. npm v3.9.2 本文将介绍node.js中编写C++扩展的入门知识. 1. 基本知识介绍 在node.js中,除了用js写代码以外,还可以使用C++编写扩展,这有点类似DLL,动态链接进js代码中.使用上也相当方便,只需用require包含,这和一般的js模块并没有什么区别.C++扩展为js和C++代码的通信提…
插件 Addons 是动态链接的共享对象.他提供了 C/C++ 类库能力.这些API比较复杂,他包以下几个类库: V8 JavaScript, C++ 类库.用来和 JavaScript 交互,比如创建对象,调用函数等等.在 v8.h 头文件中 (目录地址deps/v8/include/v8.h),线上地址online. libuv,C 事件循环库.等待文件描述符变为可读,等待定时器,等待信号时,会和 libuv 打交道.或者说,如果你需要和 I/O 打交道,就会用到 libuv. 内部 Nod…
https://nodejs.org/docs/latest/api/addons.html Node.js Addons are dynamically-linked shared objects, written in C or C++, that can be loaded into Node.js using the de style="line-height: 1.5em; font-family: Monaco, Consolas, 'Lucida Console', monospa…
1 安装 buffertools 因为使用mjpeg-proxy的关系,需要编译buffertools中的C++代码文件,怎奈何一直出错. make: Entering directory `/srv/node/SparkCore-WebApp/node_modules/buffertools/build' CXX(target) Release/obj.target/buffertools/buffertools.o ../buffertools.cc: In member function…
    下载node.js的源代码. https://github.com/joyent/node 如果用svn下载,后面加上/trunk,以免把用不着的branches也下载下来,浪费时间. 安装VS, express版本也可以.我安装的是vs2013 ultimate. 安装python 2.x http://www.python.org/download/ 注意不能是3.x, 因为node-gyp目前需要2.x. 我安装的是2.7. 用命令行工具,Cd到node源代码目录,运行vcbuil…
问题发现 在业务逻辑中发现有时使用chrome.app.window.create这个API创建出来的窗口无法使用其他的API,不仅其他chrome.app.window的API说window is undefined而且还有奇怪的警告和报错 Creating sandboxed window, it doesn't have access to the chrome.app API. The chrome.app.window.create callback will be called, b…
纠结很久,决定写一点遇到的“坑”. 基础环境:win7-64bit  node(v7.5.0)   这些安装实在是太方便了,自行准备吧. 1. 安装 python(2.7.x ),用npm安装 node-gyp(3.5.0),创建一个文件夹来存放 binding.gyp hello.cc test.js binding.gyp 内容如下: { "targets": [ { "target_name": "hello", "sources…
通过样例,让我们了解如何编写一个node的原生模块.当然,这篇文章还有一个目的,是为了方便以后编写关于node-gyp的文章,搭建初始环境. 基于node-addon-api 基于node-addon-api的nodejs插件,使用的是node的头文件:#include <node.h>. hello_world.cc #include <node.h> void Method(const v8::FunctionCallbackInfo<v8::Value>&…
当我们安装node的C/C++原生模块时,涉及到使用node-gyp对C/C++原生模块的编译工作(configure.build).这个过程,需要nodejs的头文件以及静态库参与(后续称库文件)对C/C++项目编译和链接.库文件从哪里下载,会有一定逻辑进行处理,本文将从源码入手进行分析. 编写简单的原生模块 为了方便进行分析,我们首先创建一个原生模块(关于如何编写原生模块的细节不再本文讨论). hello_world.cc #include <node.h> void Method(con…
目录 TL; DR python调javascript javascript调python 原理 基于Node.js的javascript调用python 从Node调用python函数 V8 嵌入Python 代码 可移植性 总结 基于V8的python调用javascript 编译Python解释器为WebAssembly 优点 缺点 总结 首先要明白的是,javascript和python都是解释型语言,它们的运行是需要具体的runtime的. Python: 我们最常安装的Python其…
C++访问JS函数 C++部分: /** * COMPILE foo.js AT THE FIRST COMMAND PROMPT TO RUN foo.js */ #include <v8.h> #include <iostream> #include <fstream> #include <string> using namespace v8; using namespace std; v8::Handle<v8::String> ReadF…
Google V8编程详工具函数 头文件:utils.h #ifndef UTILS_H_ #define UTILS_H_ #include "v8.h" #include <iostream> using namespace v8; using namespace std; v8::Handle<v8::String> ReadJS(const char* name); void printValue(Handle<Value> result);…
关于这个,我这几天一直在研究,国内关于v8的资料很少,stackoverflow上也不多. 说起来我得说声抱歉,虽然并没有承诺什么.这个功能大概是无法实现.下面我来解释一下为什么. 首先我们要了解一下v8的运行机制.分为以下这些东西 Context:           运行上下文,这在node启动的时候就被初始化了(这个我没怎么看明白) Isolate:             隔离域,代表一个v8虚拟机的实例,这是关键所在 HandleScope:   句柄域,或者说是句柄集合,js对象存在…
原本打算是把node源码看得差不多了再去深入V8的,但是这两者基本上没办法分开讲. 与express是基于node的封装不同,node是基于V8的一个应用,源码内容已经渗透到V8层面,因此这章简述一下我目前理解的V8引擎吧. 首先需要理解的是V8是一个JS代码运行平台,可以将JS代码编译执行. 本节就非常浅显的讲一下V8内部一些常见类,以及一个运行JS代码的简单demo. (由于研究V8引擎原理的人非常多,本人学识浅薄,可以去参考别人的博客) 参考资料: 1.很多大佬的博客 2.V8引擎API文…
前言 JavaScript绝对是最火的编程语言之一,一直具有很大的用户群,随着在服务端的使用(NodeJs),更是爆发了极强的生命力.编程语言分为编译型语言和解释型语言两类,编译型语言在执行之前要先进行完全编译,而解释型语言一边编译一边执行,很明显解释型语言的执行速度是慢于编译型语言的,而JavaScript就是一种解释型脚本语言,支持动态类型.弱类型.基于原型的语言,内置支持类型.鉴于JavaScript都是在前端执行,而且需要及时响应用户,这就要求JavaScript可以快速的解析及执行.…
引用网址: https://blog.csdn.net/swimming_in_it_/article/details/78869549 前言 JavaScript绝对是最火的编程语言之一,一直具有很大的用户群,随着在服务端的使用(NodeJs),更是爆发了极强的生命力.编程语言分为编译型语言和解释型语言两类,编译型语言在执行之前要先进行完全编译,而解释型语言一边编译一边执行,很明显解释型语言的执行速度是慢于编译型语言的,而JavaScript就是一种解释型脚本语言,支持动态类型.弱类型.基于原…
项目组有把js接入C++服务求的需求,故开始了v8接入的工作,用了一天多时间,v8才在centos环境上成功安装,过程中踩了很多坑,下面将采坑过程记录如下: centos下编译安装v8:   查看centos版本号: #cat /etc/redhat-release   在环境上gcc版本(需要支持C++14).glibc库(GLIBC-2.18)版本都OK,GN编译选项配置好,并且环境变量都配置成功的前提下,下面的V8编译.安装的脚本,功能是OK的:   #How to compile and…
什么是内存管理 内存管理是控制和协调应用程序访问电脑内存的过程.这个过程是复杂的,对于我们来说,可以说相当于一个黑匣子. 当咱们的应用程序运行在某个操作系统中的时候,它访问电脑内存(RAM)来达成下列几个功能: 运行需要执行的字节码(代码) 存储程序运行时候所需的数据 加载程序运行所需的运行时环境 上面用来存储程序运行时所需的数据,就是下面要说的堆(heap)和栈(stack). 栈(stack) 顾名思义,是一种先进后出的结构,参考一下餐盘的取和放. 俄罗斯套娃,我这不禁 栈的特点 由于先进后…
JavaScript 代码运行 以大家开发常用的 chrome 浏览器或 Node 举例,我们的 JavaScript 代码是通过 V8 运行的.但 V8 是怎么执行代码的呢?当我们输入 const foo = {foo:'foo'} 时 V8 又做了什么?笔者先抛出以上问题,我们接着往下看. JavaScript 存储 在代码运行时,最重要的前提便是有一个能够存储状态的地方,这便是我们所述的堆栈空间.我们的基础类型是保存在栈中的,会自动进行回收:而复合类型是保存在堆中的,通过 GC 操作进行空…
今天心血来潮, 下载了 v8,,然后就想着用vs编译 但是大家都苦恼的是 v8并不直接提供 vs用的项目文件和解决方案(.sln) 于是,在网上搜来搜去, 折腾来折腾去的; 终于一点一点的尝试, 可以执行 python gypfiles\gyp_v8.py -Dtarget_arch=x64 但是网上搜到的都是 python build\gyp_v8.py -Dtarget_arch=x64 可我git clone 的没有build文件夹啊, 好歹根据 https://github.com/v8…
Motivation JavaScript 是一款拥有「自动垃圾回收」功能的编程语言. 市面上具有这样功能的语言,一般都是拥有相对应的虚拟机的,像 Java的JVM ,C#的CLR ,PHP的Zend. 虚拟机一般实现了代码解析,内存的管理.布局.垃圾回收等功能. 不像C/C++这种没有虚拟机的语言,它们需要手动管理内存. C/C++语言编译后的文件,是可以直接运行的. 我认为学习一门开发语言,除了知道一些语法上的使用,各种API的调用以外.学习相应的虚拟机也是很有必要的.而 JavaScrip…
V8的编译比较简单,需要同时安装git和svn. 下载V8源码: git clone git://github.com/v8/v8.git v8 && cd v8 切换到最新版本: git pull --rebase origin master 安装依赖: make dependencies 编译: make native mode=debug library=shared snapshot=on 编译后库文件会在v8/out/ia32.release路径下 V8的Makefile不支持m…