2016-03-30 24 views
26

我想要合併Babel的變換運行時以使我的代碼與IE9兼容。但是,自整合之後,代碼甚至不會在Chrome上運行。我收到es6.object.define-property.js:3上的錯誤Uncaught TypeError: $export is not a function。如果沒有我的.babelrc中的「transform-runtime」行,一切運行良好。有任何想法嗎?

這裏是我的.babelrc

{ 
    "plugins": [ 
    "transform-runtime" 
    ], 
    "presets": [ 
    "es2015", 
    "react" 
    ] 
} 

而且我webpack.config.js

var webpack = require('webpack'); 

var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('common.js'); 

module.exports = { 
    entry: { 
    EventAdmin: './src/event_admin', 
    EventRender: './src/event_render' 
    }, 
    output: { 
    path: '../public/js2', 
    filename: '[name].js' // Template based on keys in entry above 
    }, 
    externals: { 
    // require("jquery") is external and available 
    // on the global var jQuery 
    'jquery': 'jQuery' 
    }, 
    plugins: [commonsPlugin], 
    devtool: 'source-map', 
    module: { 
    loaders: [ 
     { test: /\.css$/, loader: 'style-loader!css-loader' }, 
     { 
     test: /\.js$/, 
     loader: 'babel-loader' 
     }, 
    ] 
    } 
}; 

enter image description here

+1

我得到了同樣的錯誤,並已經嘗試過的建議可用該線程,但不幸的是沒有任何成功。代碼可以在這裏找到 - 你可以標記@Pierre Wahlgren的答案是正確的,https://github.com/ipfs/js-ipfs-unixfs-engine/pull/35 –

+0

泰德艾弗裏。他擁有最多的選票,因爲這是一個很好的答案,有助於 – silverlight513

+0

@ silverlight513這不是正確的答案。就像他說的,他不知道它爲什麼起作用。 –

回答

1

你有install也巴貝爾運行時?

我剛剛安裝了這兩個插件,並在.babelrc中添加了插件,並解決了問題。

+0

是的,我需要做特殊的事情來使用它嗎?我沒有在任何地方引用它,我知道使用「transform-runtime」插件in.babelrc會自動使用它。 –

34

嘗試在loader: 'babel-loader'之後加exclude: /node_modules/。在嘗試運行運行時變壓器時,我遇到了同樣的問題,但不包括node_modules。不過,我並不知道潛在的問題。

+0

你們是我的一天。非常感謝。 – Natim

+0

同樣的問題。排除node_modules之後的所有內容都正確無誤。謝謝! – aztack

+1

由於某種原因,這對我來說不太合適...... – Victor

6

documentation的推薦之後,您可以嘗試用「include」替換「exclude」。

Try to prefer "include" when possible...

這對我有效。

{ 
    "test": /\.js/, 
    "loader": "babel", 
    "include": [path.resolve(__dirname, './src')] 
} 
19

你好,我有同樣的問題,最後找到了一個適合我的解決方案。參見:

loaders: [ 
    { 
    test: /.js/, 
    loader: 'babel', 
    query: { 
     presets: ['es2015', 'es2017'], 
     plugins: [ 
     ['transform-runtime', { 
      helpers: false, 
      polyfill: false, 
      regenerator: true, }], 
     'transform-es2015-destructuring', 
     'transform-object-rest-spread', 
     'transform-async-to-generator', 
     ], 
    }, 
    }, 
] 

請參閱'transform-runtime'部分。我希望這有幫助。

+0

這對我工作謝謝! – Luis

+1

我有兩個來自OP的錯誤,並且'TypeError:__webpack_require __(...)不是通過實驗的函數。這是一個[wepack問題](https://github.com/webpack/webpack/issues/4012#issuecomment-280708597),它顯示了我的工作'.babelrc'和webpack配置。 – kross

+0

謝謝,這也適用於我,使用gulp'[「transform-runtime」,{0}幫助者:false, 「polyfill」:false, 「regenerator」:true} ] – blamb

1

它似乎是通過Babel 6運行core-js文件的問題,因爲Babel 6不再像Babel 5那樣將require('something')轉換爲require('something').default。我甚至試過通過這個插件https://www.npmjs.com/package/babel-plugin-add-module-exports來運行它,但不管我做了什麼,它都不會正確地更正require語句。我最終只是不得不從由babel-loader正在處理通過設置exclude屬性將此排除core-js和各種巴貝爾相關的文件:

[ /node_modules\/babel-/m, /node_modules\/core-js\//m, /node_modules\/regenerator-runtime\//m ]

作爲一個方面說明,我沒有重新安裝了node_modules自從轉換到Babel 6並導致同樣的問題,但是出於其他一些神祕的原因。

1

對於那些你誰正在使用的WebPack,確保不包括node_modules文件夾在你的WebPack配置文件如下:

module: { 
    rules: [ 
    { 
     test: /\.js$/, 
     // With this line, make sure you only include your javascript 
     // source files 
     include: [ path.resolve(__dirname, './src') ], 
     use: { 
     loader: 'babel-loader', 
     options: { 
      presets: ['env'], 
      plugins: ['transform-runtime'] 
     } 
     } 
    } 
    ] 
} 
相關問題