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 浏览器扩展无法使用代码拆分_Webpack_Google Chrome Extension_Browser Extension - Fatal编程技术网

Webpack 浏览器扩展无法使用代码拆分

Webpack 浏览器扩展无法使用代码拆分,webpack,google-chrome-extension,browser-extension,Webpack,Google Chrome Extension,Browser Extension,我有一个跨浏览器扩展(目前在Chrome和Firefox上运行)用typescript构建,用webpack编译。我想使用代码拆分来减少捆绑包的大小。但是,当我在webpack配置中启用代码拆分时,扩展不起作用。在后台脚本中有一个browserAction侦听器,如果没有用户,它将打开登录页面。或者,如果用户已登录,将显示弹出窗口。但是,单击浏览器操作图标不起任何作用。后台脚本中不会显示任何错误消息。不会显示登录窗口或弹出窗口 下面是我遇到问题的配置部分。当我把这部分注释掉,不进行代码拆分时,一

我有一个跨浏览器扩展(目前在Chrome和Firefox上运行)用typescript构建,用webpack编译。我想使用代码拆分来减少捆绑包的大小。但是,当我在webpack配置中启用代码拆分时,扩展不起作用。在后台脚本中有一个browserAction侦听器,如果没有用户,它将打开登录页面。或者,如果用户已登录,将显示弹出窗口。但是,单击浏览器操作图标不起任何作用。后台脚本中不会显示任何错误消息。不会显示登录窗口或弹出窗口

下面是我遇到问题的配置部分。当我把这部分注释掉,不进行代码拆分时,一切都正常

module.exports = {
    mode: 'development',
    entry: {
        login: path.join(__dirname, './src/js/login.ts'),
        popup: path.join(__dirname, './src/js/popup.ts'),
        options: path.join(__dirname, './src/js/options.ts'),
        background: path.join(__dirname, './src/js/background.ts'),
    },
    output: {
      path: path.join(__dirname, './dist'),
      filename: 'js/[name].js'
    },
    // When I remove this part extension is working
    optimization: {
      splitChunks: {
        name: 'vendor',
        chunks: "initial"
      }
    },
    module: {
    ...
你知道为什么会这样吗?我怎样才能让它工作?在结果供应商区块中,扩展的几个入口点主要使用节点_模块依赖项(firebase、ramda等)


谢谢你的帮助。

我也遇到了同样的问题,我认为这与
background.js
文件有关

让我们假设您的
login
条目打算在
login.html
页面中使用,
login.ts
被分为
login.js
547.js
(后面包含所有条目之间的所有共享代码)。 当
HtmlWebpackPlugin
构建HTML文件时,它会自动将
login.js
547.js
都包含在
login.js
中,因为它“知道”这是
login.js
的依赖项

但是,
background.js
它是一个服务工作者,因此不包含在HTML页面中,因此它们的依赖关系不会加载到任何地方,因为为此,您应该有另一个插件,可以自动在
background.js
开头添加行
loadScript(547.js)


最后,我刚刚排除了要拆分的
background

    splitChunks: {
      chunks(chunk) {
        return chunk.name !== 'background';
      },
    },

“扩展不起作用”太含糊了,你能调试并澄清到底发生了什么吗?@wOxxOm请填写更多细节。我真的没有什么可以添加的。试着调试它,比如在代码中设置一个断点(例如在脚本的开头),重新加载页面,看看当你通过“run to cursor”一步一步地或分块地运行它时会发生什么。