如何将Node.js回退到特定版本的V8?

3
我希望使用与现在某个其他地方正在使用的v8版本兼容的nodejs版本。
我查看了“那个”v8 ChangeLog文件,它显示:
> 2013-04-04: Version 3.17.16
> 
>         Stack trace API: poison stack frames below the first strict mode frame.
>         (issue 2564)

我想要回滚到使用这个或者早期版本的v8的Node.js版本。我修改了node.gyp文件中所有的 deps/v8path_of_some_v8

然后我执行了

cd path/to/node
gitk 

然后我从GUI界面选择了v8: update to 3.14.5.9,并使用mixed重置主分支到该提交 [这表示保留工作目录并重置主分支]。

然后我使用vcbuild.bat重新构建节点,但是遇到了错误,例如:

type is ''unknown-type''
src\node_http_parser.cc(553): error C2664: 'v8::FunctionTemplate::New' : cannot
 convert parameter 1 from 'void (__cdecl *)(const int)' to 'v8::InvocationCallb
ack' [C:\CEF\anand\chromium\chromium\src\node_2012\node\node.vcxproj]
          Incompatible calling conventions for UDT return value
src\node_http_parser.cc(570): error C2660: 'node::NODE_SET_PROTOTYPE_METHOD' :
function does not take 3 arguments [C:\CEF\anand\chromium\chromium\src\node_201
2\node\node.vcxproj]
src\node_http_parser.cc(571): error C2660: 'node::NODE_SET_PROTOTYPE_METHOD' :
function does not take 3 arguments [C:\CEF\anand\chromium\chromium\src\node_201
2\node\node.vcxproj]
src\node_http_parser.cc(572): error C2660: 'node::NODE_SET_PROTOTYPE_METHOD' :
function does not take 3 arguments [C:\CEF\anand\chromium\chromium\src\node_201
2\node\node.vcxproj]

我回退代码的方法正确吗?我应该如何使用旧版本的v8构建节点?


在构建Node时使用--shared-v8选项怎么样? - vinayr
@vinayr 我不知道那个,你能告诉我怎么做吗? - Ashish Negi
这是一个配置选项。请在此处查看更多详细信息 https://github.com/joyent/node/blob/master/configure。示例在此处 - http://blog.coolaj86.com/articles/debugging-v8-and-node-js-on-arm.html - vinayr
我没有使用共享库,重点是使节点与v8的那个版本兼容。如果它无法编译其源代码,则它也无法链接到其库。 - Ashish Negi
1个回答

0

git reset --mixed 命令不会改变工作目录中的文件(实际上你正在构建的文件)。如果你想使用 reset 命令,git reset --hard <commit> 将同时更改工作目录中的文件。

我建议使用 git checkout <commit> 命令。这将使你进入分离头状态,不会移动你的分支,并且仍然可以查看/构建该点的代码。请参阅 https://dev59.com/om025IYBdhLWcg3w1JiG#5772882 以了解有关分离头的详细说明。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接