首页 > 解决方案 > 反应部署错误 = 断言 `args[1]->IsString()'

问题描述

我正在尝试部署一个 React 应用程序。它工作正常,所有测试都通过了。但它会被 CI 捕获。

这是错误:

Deploying application
node[5878]: ../src/node_contextify.cc:628:static void node::contextify::ContextifyScript::New(const v8::FunctionCallbackInfo<v8::Value>&): Assertion `args[1]->IsString()' failed.
 1: node::Abort() [node]
 2: 0x876c55 [node]
 3: node::contextify::ContextifyScript::New(v8::FunctionCallbackInfo<v8::Value> const&) [node]
 4: v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo*) [node]
 5: 0xacd2df [node]
 6: v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [node]
 7: 0xf05d4b8427d
Script failed with status 
failed to deploy

我认为这与 Node 版本有关......但我不太确定。帮助!

这似乎是同一个问题,但老实说,我并没有真正从中得到任何答案:https ://github.com/nodejs/node/issues/20285

标签: node.jsreactjs

解决方案


基于 Github 线程,我假设你在开发工作流程中使用 Gulp.js,所以基于它;

节点 10 已将其 contextify 脚本更改为更严格,因此使用它的现有 Gulp 3.9.x 版本也会在断言失败时引发错误。

所以解决方案是

1) 安装 Gulp 4 并升级您的 gulpfile.js 有关更改的更多信息,请参阅这篇关于升级您的 GULP 以使用节点 10 运行的文章

或者干脆

2) 将你的 node.js 版本降级到 LTS 8.x,直到 Gulp 4 作为默认的 npm 包发布。


推荐阅读