【问题标题】:Dynamic require in webpack not workingwebpack中的动态要求不起作用
【发布时间】:2017-02-10 09:47:48
【问题描述】:

无法使用 webpack 解析动态需求。出现错误

WARNING in ./ace/config.js
112:21-40 Critical dependency: the request of a dependency is an expression

WARNING in ./ace/config.js
142:39-46 Critical dependency: require function is used in a way in which
dependencies cannot be statically extracted        

WARNING in ./ace/config.js
124:12-131:14 Critical dependency: the request of a dependency is an
expression 

有 5 个文件使用了静态 require,只有 1 个文件使用了动态 require。

我的 webpack 配置文件是这样的

var webpack = require('webpack');

module.exports = {
 context: __dirname + '/app',
 entry: {
    services: ["./init.js"]
},
output: {
    path: __dirname + '/public/javascript',
    filename: "[name].bundle.js?v=[hash]"
},
module: {
    loaders: [
        { test: /\.json$/, loader: 'json-loader' },
        {
            loader: 'babel-loader',
            query: {
                presets: ['es2015', 'stage-0']
            }
        },
        { test: /\.css$/, loader: "css-loader" }
    ]
},
node: {
    console: true,
    fs: 'empty',
    net: 'empty',
    tls: 'empty'
},
target: 'node'
};

【问题讨论】:

  • 尝试使用 ace-builds 的预编译版本,

标签: javascript webpack browserify ace-editor


【解决方案1】:

我们需要使用 webpack 功能解决这些动态需求 [https://webpack.github.io/docs/context.html][1]

只需要提到 webpack 可以解决这些依赖关系的目录。你也可以探索 webpack 的 ContextReplacementPlugin 。

   this =>  require([module])
   to => require(['./directory/' + module + '.js'])

模块名称是动态的

【讨论】:

  • // var dns = require('dns'); var 目录 = './node_modules/'; var dns = require([目录 + 'dns' + '.js']); // var request = require('request'); var request = require([目录 + 'request' + '.js']);
【解决方案2】:

通过将目录选择为node_modules 的下一行替换注释行来解决。

// var dns = require('dns');
var directory = './node_modules/';
var dns = require([directory + 'dns' + '.js']);
// var request = require('request');
var request = require([directory + 'request' + '.js']);

【讨论】:

    猜你喜欢
    • 2021-03-21
    • 2017-03-18
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 2018-10-20
    • 2018-05-09
    相关资源
    最近更新 更多