Webpack 2和typeahead.js

时间:2017-09-06 14:29:32

标签: webpack requirejs

您好我正在尝试将RequireJS应用程序迁移到Webpack。我的所有js文件都包含在项目中我没有使用node_modules中的任何内容。为什么要从那里加入?这是一个仅在Web浏览器中使用的Web项目,不使用browserify。

这是我的webpack.config.js:

module.exports = {
    resolve: {
        modules: [
            'private/application/controllers/'
        ],
        alias: {
            typeahead: 'system/js/jquery.typeahead.min',
            bloodhound: 'system/js/bloodhound.min',
            ...
        }
    },
    module: {
        loaders: [
            { test: /typeahead/, loader: 'imports-loader?jquery' },
            { test: /bloodhound/, loader: 'imports-loader?typeahead' },
            ...
        ]
    },
    plugins: [
        new webpack.IgnorePlugin( /^\.\/locale$/, /moment$/ )
    ],
    target: 'web',
    entry: {
        app: 'system/js/app',
        module: 'system/js/module',
        ...
    },
    output: {
        libraryTarget: 'amd',
        filename: '[name].min.js',
        path: __dirname + 'public/files/cache'
    }
};

我得到的错误:

ERROR in ./node_modules/timers-browserify/main.js
Module not found: Error: Can't resolve 'setimmediate' in '/Users/name/Sites/revamp/node_modules/timers-browserify'
 @ ./node_modules/timers-browserify/main.js 51:0-23
 @ ./private/application/controllers/system/js/jquery.typeahead.min.js

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您的加载器会在整个项目文件夹中搜索这些文件。 您可以尝试将exclude: /node_modules/添加到每个加载器。

module: {
        loaders: [
            { test: /typeahead/, loader: 'imports-loader?jquery', exclude: /node_modules/ },
            { test: /bloodhound/, loader: 'imports-loader?typeahead', exclude: /node_modules/ },
            ...
        ]
    },