在测试jsencrypt代码的过程中,苏南大叔使用gulp来重新编译jsencrypt,所以全局安装了gulp。然而在gulpfile.js所在目录执行命令gulp的时候,出现了一个奇怪的报错信息:internalBinding is not defined。那么,如何解决这个问题呢?

苏南大叔:gulp编译,如何解决报错:internalBinding is not defined - gulp-natives
gulp编译,如何解决报错:internalBinding is not defined(图5-1)

本文测试环境:mac/gulp@2.2.0/native@1.1.6。本文的龙套项目为:

报错信息

缺少的模块叫做internalBinding,报错信息如下:

internal/util/inspect.js:31
const types = internalBinding('types');
ReferenceError: internalBinding is not defined

苏南大叔:gulp编译,如何解决报错:internalBinding is not defined - gulp-natives-issue
gulp编译,如何解决报错:internalBinding is not defined(图5-2)

解决方案

解决方案就是:在当前项目里面,安装natives。截至到发稿,natives的最新版本号为1.1.6

npm install natives -D

苏南大叔:gulp编译,如何解决报错:internalBinding is not defined - gulp-natives-solve
gulp编译,如何解决报错:internalBinding is not defined(图5-3)

因为默认的npm i不添加-g的话,就是默认保存到当前项目的。但是,-D是添加到否添加到devDependencies里面,而不加-D就是添加到dependencies里面。对于本文来说,推荐使用-D参数。

苏南大叔:gulp编译,如何解决报错:internalBinding is not defined - devdependencies
gulp编译,如何解决报错:internalBinding is not defined(图5-4)

安装好这个natives模块后,就可以解决internalBinding is not defined的问题,顺利使用gulp了。

苏南大叔:gulp编译,如何解决报错:internalBinding is not defined - gulp-natives-solve-2
gulp编译,如何解决报错:internalBinding is not defined(图5-5)

总结

据说这个问题是最新版的gulp才会出现的问题。版本升级需谨慎啊... 好,如果您想知道更多有关gulp的信息,请点击苏南大叔的博客文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   gulp

本站的忠实读者小伙伴,正在阅读下面这些文章: