2017-01-27 97 views
2

我正在用最新最好的webpack 2版本進行一些測試,並在嘗試將jQuery 3.1.1作爲依賴項導入時遇到了問題。 我只是使用import {$} from 'jquery';導入,但生成的包在執行時會生成一個例外TypeError: __webpack_require__.i(...) is not a function。 使用const $ = require('jquery');按預期工作。 這是我的理解,使用webpack 2我可以使用es6導入(幾乎)獨立於庫的格式。ES6在webpack 2中導入AMD(例如jQuery 3.1.1)模塊

webpack.config.js:

'use strict'; 

const path = require('path'); 
const webpack = require('webpack'); 

function config(env) { 
    const PRODUCTION = env && typeof env.production !== 'undefined'; 

    const PLUGINS = [ 
     new webpack.DefinePlugin({ 
      DEVELOPMENT: JSON.stringify(!PRODUCTION), 
      PRODUCTION: JSON.stringify(PRODUCTION) 
     }) 
    ]; 

    if (PRODUCTION) { 
     PLUGINS.push(new webpack.optimize.UglifyJsPlugin({ 
      sourceMap: true, 
      compress: { 
       dead_code: true, 
       unused: true, 
      } 
     })); 
    } 

    return { 
     entry: { 
      index: './src/index.js' 
     }, 
     output: { 
      path: path.resolve(__dirname, 'dist'), 
      filename: '[name].js' 
     }, 
     module: { 
      rules: [ 
       { 
        test: /\.js$/i, 
        include: /src/, 
        exclude: /node_modules/, 
        use: [ 
         { 
          loader: 'babel-loader', 
          options: { 
           compact: false, 
           presets: [['es2015', {modules: false}]] 
          } 
         } 
        ] 
       } 
      ] 
     }, 
     plugins: PLUGINS, 
     devtool: 'source-map' 
    }; 
} 

module.exports = config; 

兩個問題:

  • 這是一個bug,或只是不是爲了工作,我希望它?
  • TypeError: __webpack_require__.i(...) is not a function通常表示的異常是什麼錯誤?

回答

2

我的錯誤:我使用了一個命名導入,而不是默認導入。

正確:

import $ from 'jquery'; 

錯誤:

import {$} from 'jquery';