Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack Web包加载程序测试中的require.resolve是什么_Webpack - Fatal编程技术网

Webpack Web包加载程序测试中的require.resolve是什么

Webpack Web包加载程序测试中的require.resolve是什么,webpack,Webpack,我在网页上学习这个。我已经通过以下教程构建了几个网页包演示项目 以下是配置导入加载程序的代码: // ./webpack.config.js module.exports = { ... module: { loaders: [ { test: require.resolve("some-module"), loader: "imports?this=>window"

我在网页上学习这个。我已经通过以下教程构建了几个网页包演示项目

以下是配置导入加载程序的代码:

// ./webpack.config.js

module.exports = {
    ...
    module: {
        loaders: [
            {
                test: require.resolve("some-module"),
                loader: "imports?this=>window"
            }
        ]
};
我的问题:

  • 通常,“test”应该是正则表达式。这里的
    需要解决什么问题(“某些模块”)
    ?这是什么意思 例如,
    require.resolve(“”

    > require.resolve('angular')
    /tmp/node_modules/angular/index.js
    
    因此,在您的示例中,属性
    test
    将包含指向模块的路径字符串
    some module
    ,默认情况下webpack字符串指向正则表达式,因此加载程序配置的最终版本如下所示:

    {
      test: /^node_modules\/some-module\/index.js/,
      loader: 'imports?this=>window"
    }
    

    如您所见,此加载程序将仅应用于一个文件

    webpack的require.resolve返回模块id-webpack.js.org/api/module methods/#require resolve

    模块ID是Web包中的一个数字(与NodeJS不同,NodeJS是一个 字符串——文件名)


    使用require.resolve()而不仅仅是传递诸如Loader之类的字符串的确切原因是什么?@EJMason如果只传递像“foo”这样的名称,您永远不知道相对于哪个文件夹,web包将解析此名称。例如,您有一个npm库,它应该由客户端应用程序通过web包构建并通过npm发送。当客户端构建您的库并使用您的webpack.config
    pwd
    时,将是客户端项目目录,因此“foo”将相对于此文件夹进行解析。这意味着有可能1。web pack只是找不到这样的加载程序2)它解析这样加载程序的客户端版本