Подтвердить что ты не робот

Использование d3.js в качестве внешнего в webpack

Я использую этот учебник, чтобы настроить проект React.js с помощью webpack. Ниже приведена точная копия webpack.config.js(за исключением того, что я использую папку app и 'dist'), и я также добавляю d3.js как external. Поскольку React добавлен как external, он позволяет мне делать require('react') в любом из моих файлов приложений, не включая его в комплект. Я хочу сделать то же самое с d3.js и установил его как node_module и перечислил его во внешней области моей конфигурации webpack, но когда я делаю require('d3'), я получаю сообщение об ошибке, которое оно недоступно.

Как я могу использовать d3 (или jQuery, если на то пошло) как внешний, если я установил его как node_module?

это моя настройка проекта

/app
/dist
/node_modules
package.json
webpack.config.js
module.exports = {
    entry: './app/index.jsx',
    output: {
        path: './dist',
        filename: 'bundle.js', //this is the default name, so you can skip it
        //at this directory our bundle file will be available
        //make sure port 8090 is used when launching webpack-dev-server
        publicPath: 'http://localhost:8090/assets'
    },
    module: {
        loaders: [
            {
                //tell webpack to use jsx-loader for all *.jsx files
                test: /\.jsx$/,
                loader: 'jsx-loader?insertPragma=React.DOM&harmony'
            }
        ]
    },
    externals: {
        //don't bundle the 'react' npm package with our bundle.js
        //but get it from a global 'React' variable

        'react': 'React',
        'd3': 'd3'
    },
    resolve: {
        modulesDirectories: ['app', 'node_modules'],
        extensions: ['', '.js', '.jsx']
    }
}
4b9b3361

Ответ 1

Я знаю, что этот вопрос был открыт некоторое время, но, надеюсь, этот ответ по-прежнему полезен!

Если вы установили d3 (или jQuery) в качестве node_module, вы можете использовать webpack ProvidePlugin для привязки произвольной клавиши к модулю.

Ключ будет доступен для использования в любом месте вашего веб-приложения.

например. webpack.config.js

{
 ...lots of webpack config here...
 ...
 plugins: [
    new webpack.ProvidePlugin({
        d3: 'd3',
        $: 'jquery'
    })
 ]
 ...
}

Затем в my-file.js

var d3 = require('d3')

Надеюсь, что это поможет!