简体   繁体   English

ES6(babel + webpack)类方法中的静默错误

[英]ES6 (babel+webpack) Silent errors in the class methods

THE PROBLEM : 问题

I use a webpack bundle to locate and transpile the ES6. 我使用一个webpack捆绑包来定位和运输ES6。

I want to catch errors without try/catch block. 我想在没有try / catch块的情况下捕获错误。 How can i get this and what is the reason makes exceptions silent? 我如何获得此消息,原因是什么让异常保持沉默? This problem apperars not only in constructor() method. 这个问题不仅在constructor()方法中存在。 Any method of the class thow errors like this silently 类的任何方法都会像这样默默地发出错误

import React from 'react';
class TestComponent extends React.Component {
    constructor(props) {
        super(props);
        /*
            Try/catch block works fine.
            "test is not defined(…)" 
        */
        try {
            test.fake(1);
        } catch (e) {
            console.error(e);
        }
        // Line below should theoretically throw exception but it does not 
        test.fake(1);
    }
    render() {
        return <div>TEST</div>
    }
}
export default TestComponent;   

This is my webpack.config 这是我的webpack.config

var path = require('path');
var webpack = require('webpack');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    devtool: 'cheap-module-eval-source-map',
    //devtool: 'eval',
    entry: [
        'webpack-dev-server/client?http://localhost:3000',
        'webpack/hot/only-dev-server',
        './src/js/main'
    ],
    output: {
        filename: 'app.js',
        path: path.join(__dirname, 'dist'),
        publicPath: '/assets/'
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin(),
        new ExtractTextPlugin('app.css', {
            allChunks: true
        }),
        new webpack.DefinePlugin({
            __DEV_TOOLS__: true
        }),
        new HtmlWebpackPlugin({
            title: 'Redux Boilerplate',
            filename: 'index.html',
            template: 'index.template.html'
        })
    ],
    resolve: {
        root: path.resolve('./src/js')
    },
    module: {
        loaders: [
            {
                test: /\.scss$/,
                loader: ExtractTextPlugin.extract('style-loader', 'css-loader!sass')
            }, {
                test: /\.js$/,
                loaders: ['babel'],
                exclude: /node_modules/
            }
        ]
    },
    cssnext: {
        browsers: 'last 2 versions'
    }
};

Webpack will transpile not compile your code. Webpack会编译而不编译您的代码。 When you trans-pile the above, there are not syntax issues or missing requirements, so webpack will simply run that code through babel and transpile to EC5. 当您对上述内容进行反编译时,没有语法问题或缺少要求,因此webpack只需通过babel运行该代码并将其编译到EC5。 You might want to look for a loader or plugin that actually executes the code after transpilation. 您可能想要寻找在编译后实际执行代码的加载程序或插件。 Better yet, combine webpack with gulp or karma and get a full fledged solution. 更好的是,将webpack与gulp或karma结合使用,以获得完整的解决方案。 We use something like this. 我们使用这样的东西。 https://github.com/webpack/karma-webpack https://github.com/webpack/karma-webpack

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM