babel插件的使用问题
1.Cannot read property ‘bindings’ of null
在webpack中需要用到babel插件,在gulp中为了转义es6语法也需要babel插件。今天在执行一个gulp任务时,死活过不去。
1 | gulp.task('minify-js', function() { |
代码也很简单,就是把public中的js代码先把es6语法使用babel转成es5语法,然后再压缩,昨天还好好的,今天就不能使用了,简直郁闷透顶。出现了:“ Cannot read property ‘bindings’ of null” 错误。
我的package.js文件是这样写的:
而使用到的babel代码就是上面的一段代码
主要问题是我昨天打包运行好好的,今天不知道修改了那些地方,就是不能运行了。
无奈,只能硬着头皮解决了。多方查找,可能是我使用了babel版本七的缘故。
(1) 首先就是安装@babel/preset-env: npm install @babel/preset-env –save-dev
(2) 然后将:{presets: [‘env’]} 换成:{presets: [“@babel/preset-env”]
(3) 见证奇迹的时刻到了,竟然可以了?(我都开始怀疑我以前能执行成功,都是我的幻觉)
1.https://github.com/babel/babel/issues/6186#issuecomment-366556833
2.Upgrade to Babel 7: Cannot read property ‘bindings’ of null:https://stackoverflow.com/questions/52092739/upgrade-to-babel-7-cannot-read-property-bindings-of-null/52092788
(突然,我发现了一个秘密),当我把”@babel/preset-env”换成env的时候,竟然又可以了???(合着,我是做了白用功啊)
2.Cannot find module ‘@babel/template’
问题出现的原因,不知道是不是因为我执行了cnpm uninstall gulp-filter -D命令,因为在执行这个命令之前,一切都很平静。应该是某个插件依赖了@babel/template,而gulp-filter也依赖了@babel/template,但是没有在package.json中写入,所以在卸载的时候,把@babel/template删除掉了。我没有实际才是,能不能直接安装@babel/template,我是把node_modules删除掉,重新cnpm install 安装了全部的依赖,就解决了问题。