2015-06-04 19 views
5

Tôi có một dự án đã viết trong JSX và tôi sử dụng webpack để xây dựng tệp main.js.ReactJs + webpack + ie + console.log

Đây là webpack.config.js tôi:

var path = require('path'); 

module.exports = { 
    entry:{ main: [ 
      'consolelog', 
      'es5-shim', 
      'es5-shim/es5-sham', 
      'es6-shim', 
      'es6-shim/es6-sham', 
"./app/client" 
     ]}, 

    output: { 
    filename: '[name].js', 
    chunkFilename: '[id].chunk.js', 
    path: path.join('public', 'js'), 
    publicPath: '/js/' 
    }, 

    module: { 
    loaders: [ 
     { test: /\.js$/, loader: 'jsx-loader?harmony&insertPragma=React.DOM' }, 
     { test: require.resolve('react'), loader: 'expose?React' }, 

    ] 
    } 
}; 

Vấn đề của tôi là tôi không thể làm cho công việc dự án của tôi dưới IE (tôi thử nghiệm với IE9 vào lúc này). Nó luôn luôn nói "giao diện điều khiển là không xác định".

Với Firefox và Chrome, Chrome hoạt động hoàn hảo.

Tôi làm gì sai?

Tôi đã thử với giao diện điều khiển-chèn lấp quá nhưng kết quả tương tự.

IE9 nói rằng nó không thành công ở dòng này của mã javascript:

_deprecationWarning2['default']('CollapsableNav', 'CollapsibleNav', 'https://github.com/react-bootstrap/react-bootstrap/issues/425#issuecomment-97110963'); 

Nhưng không có console.log trên đó.

Tôi làm gì sai?

Cảm ơn bạn trước!

+0

Bạn cũng có thể chia sẻ các dòng mã xung quanh không? Đôi khi vấn đề có thể ở trên hoặc ngay bên dưới, dòng bạn đang được hướng đến. Điều gì xảy ra nếu bạn tạo một đối tượng bảng điều khiển giả trước tất cả mã của bạn? 'window.console = window.console || {log: function() {}, error: function() {}, cảnh báo: function() {}}; '? – Sampson

+0

Nó hoạt động và đi xa hơn. Tôi sẽ sao chép ở đây dòng xung quanh nhưng có vẻ như nó là React-công cụ mà sử dụng rất nhiều console.log Lỗi tiếp theo nói: Object không hỗ trợ tài sản hoặc phương pháp '__defineGetter__' – user1870634

+0

Được rồi rõ ràng nó là gói localStorage sử dụng nó và nó không biến đổi. Làm thế nào tôi có thể thêm tự động với webpack? Vì vậy, tôi không phải làm điều đó theo cách thủ công mọi lúc. Cảm ơn sự giúp đỡ của bạn – user1870634

Trả lời

3

Trong các trình duyệt không hỗ trợ bảng điều khiển, bạn cần phải tách các chức năng của bảng điều khiển khỏi mã của mình. Đối với webpack, bạn có thể sử dụng webpack-strip. Một cách để sử dụng như sau:

var WebpackStrip = require('webpack-strip') 

Sau đó thêm { test: /\.js$/, loader: WebpackStrip.loader('console.log', 'console.error') } với bộ tải dải console.logconsole.error

{ 
    module: { 
     loaders: [ 
      { test: /\.js$/, loader: 'jsx-loader?harmony&insertPragma=React.DOM' }, 
      { test: require.resolve('react'), loader: 'expose?React' }, 
      { test: /\.js$/, loader: WebpackStrip.loader('console.log', 'console.error') } 
     ] 
    } 
}; 
+0

Cảm ơn bạn. Tôi đã thử nó. Tôi đặt var WebpackStrip = require ('webpack-strip') trong webpack.config.js và thêm dòng bộ nạp. Nhưng tiếc là nó không hoạt động. Điều kỳ lạ là tôi vẫn có thể thấy console.log và console.error trong tệp "main.js" được tạo của tôi. Làm thế nào là có thể? Cảm ơn sự giúp đỡ của bạn – user1870634

+0

Bạn có kiểm tra xem mô-đun dải webpack có được tải đúng không? – Mark

+0

Tôi làm cách nào để kiểm tra? – user1870634

0

Bạn phải đặt cả bộ tải trong cùng một dòng. Thay vì sử dụng loader, hãy sử dụng loaders và chuyển một mảng với cả hai trình tải.

Các vấn đề liên quan