在webpack 2中ES6导入AMD(例如jQuery 3.1.1)模块

时间:2017-01-27 11:52:13

标签: javascript jquery webpack webpack-2

我正在使用最新最好的webpack 2版本进行一些测试,并在尝试将jQuery 3.1.1作为依赖项导入时遇到了问题。 我只是使用import {$} from 'jquery';导入,但生成的包在执行时生成异常TypeError: __webpack_require__.i(...) is not a function。 使用const $ = require('jquery');按预期工作。 据我所知,使用webpack 2我可以独立于库的格式使用es6导入(几乎)。

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;

两个问题:

  • 这是一个错误还是不打算像我期望的那样工作?
  • 异常TypeError: __webpack_require__.i(...) is not a function通常表示什么错误?

1 个答案:

答案 0 :(得分:2)

我的错误:我使用了命名导入而不是默认导入。

<强>正确:

import $ from 'jquery';

<强>错误:

import {$} from 'jquery';