2016-02-21 29 views
1

我有一個使用Webpack,Babel和React的工作Hello World示例。當我在Chrome DevTools中設置斷點時,Chrome表示當前範圍中所有導入的符號都未定義。在JSX sourcemap中保留由Webpack設置的範圍中的變量名

如果我讓代碼運行,它按預期工作。 React成功呈現「Hello,World!」問題在於Chrome看到了錯誤的範圍。

編輯:這是因爲Webpack重命名我的變量。 如何保存我的變量名稱以便我可以更舒適地進行調試?

我的webpack配置如下。

var path = require('path'); 
var webpack = require('webpack'); 
var BrowserSyncPlugin = require('browser-sync-webpack-plugin'); 

var public_dir = __dirname + '/public'; 

module.exports = { 
    entry: './behavior/house/entry.jsx', 

    cache: true, 
    debug: true, 
    devtool: 'source-map', 

    output: { 
     path: __dirname + '/public', 
     filename: 'behavior.js', 
     sourceMapFilename: 'behavior.js.map' 
    }, 

    resolve: { 
     extensions: ['', '.js', '.jsx'], 
     root: [ 
      path.resolve('./behavior/house'), 
      path.resolve('./behavior/vendor') 
     ] 
    }, 
    devServer: { 
     contentBase: public_dir, 
     filename: 'behavior.js', 
     host: '0.0.0.0', 
     colors: true, 
     noInfo: true 
    }, 
    plugins: [ 
     new BrowserSyncPlugin({ 
      host: 'localhost', 
      port: 3000, 
      server: { baseDir: [public_dir] } 
     }) 
    ], 
    module: { 
     preLoaders: [ 
      { 
       test: /\.jsx?$/, 
       exclude: /(node_modules|bower_components)/, 
       loader: 'source-map' 
      } 
     ], 
     loaders: [ 
      { 
       test: /\.jsx?$/, 
       exclude: /(node_modules|bower_components)/, 
       cacheable: true, 
       loader: 'babel-loader', 
       query: { 
        presets: ['es2015', 'react'], 
        retainLines: true, 
        cacheDirectory: true 
       } 
      } 
     ] 
    } 
}; 

回答

1

我也注意到了。如果您查看範圍內的變量列表,導入顯示爲類似_React_react2

當它將所有文件捆綁在一起時,它看起來像webpack重命名了一些變量。源代碼保持您的斷點同步,但控制檯不會將您的變量名稱映射回es6源代碼。