webpack打包踩坑之TypeError: Cannot read property 'bindings' of null

file loader介绍:https://www.webpackjs.com/loaders/file-loader/

babel loader介绍:https://webpack.js.org/loaders/babel-loader/

webpack-dev-server介绍:https://www.webpackjs.com/configuration/dev-server/  ,https://www.jianshu.com/p/73d74445e5c5

今日在学习百度前端学院的一个小餐厅demo,学习用webpack打包遇到了一些问题

首先是根据这篇入门教学文章一步一步安装https://segmentfault.com/a/1190000006178770#articleHeader6

1、报错:TypeError: Cannot read property ‘bindings‘ of null

原因:可能没装babel cli,看了网友写的才发现,加上之后就好了

第二个是babel版本问题

教学文章有点旧,是这样安装的

而官方的说明是

在webpack 4.2以上使用

npm install -D babel-loader @babel/core @babel/preset-env

重新安装后,再更改老的配置

原来是“env”而已,由网友提供的答案顺利解决了问题。

webpack - babel配置

babel是一个javascript编译器,是前端开发中的一个利器。它突破了浏览器实现es标准的限制,使我们在开发中可以使用最新的javascript语法。

通过构建和babel,可以使用最新js语法进行开发,最后自动编译成用于浏览器或node环境的代码。

webpack中使用babel

配合webpack使用babel前,需要首先使用npm init初始化一个项目,npm install -g webpack安装webpack(全局安装是为了在命令行使用webpack命令)。

  • 安装babel-loader, babel-core, babel-preset-env。

npm install --save-dev babel-loader babel-core babel-preset-env
其中,babel-preset-env插件是为了告诉babel只编译批准的内容,相当于babel-preset-es2015, es2016, es2017及最新版本。通过它可以使用最新的js语法。

  • 配置webpack.config.js

在webpack配置文件中配置bable-loader

module: module: {
    {     rules: rules: [
        [         {
            {             test: test: /\.js$/,
            /\.js$/,             use: use: {
                {                 loader: loader: ‘babel-loader‘,
                ‘babel-loader‘,             options: {
                    presets: [
                        [‘env‘,{
                            targets: {
                                browsers: [‘> 1%‘, ‘last 2 versions‘]
                            }
                        }]
                    ]
                }
            },
            exclude: ‘/node_modules/‘
        }
    ]
}

其中,exclude是定义不希望babel处理的文件。targets是presets的一些预设选项,这里表示将js用于浏览器,只确保占比大于1%的浏览器的特性,主流浏览器的最新两个主版本。
更多与配置有关的信息,可以参考:
babel env preset设置,
browserlist预设置.

  • 在命令行中运行相应webpack命令即可。
  • 由于babel-preset配置选项较多,我们一般可以在根目录下建立.babelrc文件,专门用来放置babel preset配置,这是一个json文件。可以将上述配置修改如下:
//.bablerc文件
{
    "presets": [
        [‘env‘,{
            "targets": {
                "browsers": [‘> 1%‘, ‘last 2 versions‘]
            }
        }]
    ]
}
//原webpack.config.js文件
module: {
    rules: [
        {
            test: /\.js$/,
            use: {
                loader: ‘babel-loader‘
            },
            exclude: ‘/node_modules/‘
        }
    ]
}
 

babel-polifill插件

在上面的babel配置中,babel只是将一些es6,es7-8的语法转换成符合目标的js代码,但是如果我们使用一些特性或方法,比如Generator, Set, 或者一些方法。babel并不能转换为低版本浏览器识别的代码。这时就需要babel-polifill。

简单的说,polifill就是一个垫片,提供了一些低版本es标准对高级特性的实现。使用polifill的方法如下:

npm install --save babel-polifill

然后在应用入口引入polifill,要确保它在任何其他代码/依赖声明前被调用。

//CommonJS module
require(‘babel-polyfill‘);

//es module
import ‘babel-polifill‘;

在webpack.config.js中,将babel-polifill加入entry数组中:

entry: ["babel-polifill", "./app.js"]

相比于runtime-transform,polifill用于应用开发中。会添加相应变量到全局,所以会污染全局变量。

更多细节参考babel-polifill

runtime-transform插件

runtime transform也是一个插件,它与polifill有些类似,但它不污染全局变量,所以经常用于框架开发。

安装:

npm install --save-dev babel-plugin-transform-runtime

npm install --save babel-runtime

用法:
将下面内容添加到.bablerc文件中

{
    "plugins": ["transform-runtime"]
}

更多细节参考bable-runtime-transform插件

webpack打包踩坑之TypeError: Cannot read property 'bindings' of null

原文地址:https://www.cnblogs.com/Joe-and-Joan/p/10335881.html

时间: 2024-11-10 14:50:39

webpack打包踩坑之TypeError: Cannot read property 'bindings' of null的相关文章

Uncaught TypeError: Cannot read property 'ownerDocument' of null

/********************************************************************* * Uncaught TypeError: Cannot read property 'ownerDocument' of null * 说明: * 尝试将SVG文件内容通过JS Ajax加载,然后动态插入div中,报这个错误, * 解决办法,直接将svg后缀改成html,就可以了. * * 2017-8-25 深圳 龙华樟坑村 曾剑锋 *********

Uncaught TypeError: Cannot set property 'innerHTML' of null

学习Chrome插件时,要在弹出页面中显示当前时间,结果怎样也显示不出来 看了 http://www.cnblogs.com/mfryf/p/3701801.html 这篇文章后感悟颇深 通过调试发现在js中的一段代码没有执行到,报以下错误 Uncaught TypeError: Cannot set property 'innerHTML' of null  然后查询该错误原因,结果是因为js引用放在了页面的头部,在修改 innerHTML 属性时找不到该属性,因为需要修改一个html标签中的

vue报错 Uncaught TypeError: Cannot read property ‘children ’ of null

Uncaught TypeError: Cannot read property 'children ' of null ratings未渲染完毕,就跳走goods了,取消默认跳转,即可

TypeError: Cannot red property 'style' of null 错误解决

错误信息如下: JSP代码如下: <c:if test ="${not empty excelErrors}"> <div id="excelErrorDiv" class="acxiom-content-container closed rounded vpad top-buffer" style="width:90%;margin-left:5%;"> <div class="acx

Three.js three.js Uncaught TypeError: Cannot read property &#39;getExtension&#39; of null

在调试Three.js执行加载幕布的时候,突然爆出这个错误three.js Uncaught TypeError: Cannot read property 'getExtension' of null,查询了半天也没找到结果 最后突然想到是不是浏览器的设置问题,检查了一下WebGL,果然重新安装浏览器之后没有开启,正常开启之后,显示正常 留痕MARK一下 PS:可以直接在百度上搜索浏览器的WebGL的开启方式 :) Three.js three.js Uncaught TypeError: C

解决webpack4版本在打包时候出现Cannot read property &#39;bindings&#39; of null 或 Cannot find module &#39;@babel/core&#39;问题

配置打包时报Cannot read property 'bindings' of null 或 Cannot find module '@babel/core'问题 解决:模块中对js的处理配置如下图可解决 解决webpack4版本在打包时候出现Cannot read property 'bindings' of null 或 Cannot find module '@babel/core'问题 原文地址:https://www.cnblogs.com/runningQiang/p/996963

Uncaught TypeError: Cannot read property &#39;appendChild&#39; of null

出现了这个是因为把js放在了head中,而我获取的是在body中的东西.html整体上是至上而下的流程.因此需要将js从head中放置到body中就可以了. Uncaught TypeError: Cannot read property 'appendChild' of null 原文地址:https://www.cnblogs.com/logsapling/p/9995904.html

[Vue warn]: Error in render: &quot;TypeError: Cannot read property &#39;length&#39; of null&quot;

[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of null" 看到ta,总是能让人勾起心中的躁动,呼吸变得急促,嘴唇有些干涩,眼神瞬间专注,思想更是达到了忘我的境界,因为老板说,今天bug不改完就不能去吃晚饭哇! 看到这样的报错是最让人一头雾水的,渲染出错,要定位到是什么标签引起的,标签为什么引发这样的报错,错误代码定位可以用排除法,把错误的代码注释掉,如果不报错了,那就是注释的代码出了问

webpack打包踩的坑

打包的时候一直包这个错误 Child html-webpack-plugin for "..\index.html": 1 asset Entrypoint html-webpack-plugin for "..\index.html" = ../index.htmlChild mini-css-extract-plugin node_modules/css-loader/index.js!node_modules/iview/dist/styles/iview.c