问题:
我使用webpack包来定位和转换ES6。
我想在没有try / catch块的情况下捕获错误。我怎样才能得到这个,是什么原因使异常沉默?这个问题不仅仅出现在constructor()方法中。该类的任何方法都会像这样无声地发生错误
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;
这是我的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'
}
};
答案 0 :(得分:0)
Webpack将 transile 无法编译您的代码。当您转换上述内容时,没有语法问题或缺少要求,因此webpack将通过babel运行该代码并转换为EC5。您可能希望查找在转换后实际执行代码的加载程序或插件。更好的是,结合webpack与gulp或业力,并获得一个完整的解决方案。我们使用这样的东西。 https://github.com/webpack/karma-webpack