由于 CSP 问题,通过 webpack 删除生产代码的 eval()

Ioa*_*dis 10 eval content-security-policy webpack babeljs webpack-dev-server

我试图遵守捆绑生产代码中的 CSP 指令。我们制定了严格的 ContentSecurityPolicy,不允许eval()及其相关项(如setTimeout(String)setInterval(String)和 )new Function(String)。因此,我尝试通过webpack.config.js删除此类语句。

我正在使用webpack 4.28.0 ,在网上看到大量指南后,我在webpack.config.js中尝试了以下操作:

mode: 'production',
node: {
  global: false,
  fs: 'empty', // irrelevant for this example I think
}

// rest of code ... 

plugins: [
      new webpack.DefinePlugin({ // This was put in place because before I got window is undefined errors
        global: 'window'
      }),

// rest of code ... 

Run Code Online (Sandbox Code Playgroud)

此外,devtool即使我认为这并不重要,该属性也未设置(根据我在网上找到的一些指南)。

我目前收到有关以下方面的投诉new Function(...)(参见下面的图片):

在此输入图像描述

这也是 CSP 错误:

在此输入图像描述

我不是最精通webpack的,所以希望你们其他人也能做到这一点,我想问一下你们,是否可以通过webpack来做到这一点?您过去是否偶然发现过这样的事情,您能分享一些提示吗?难道是 Babel 在做事吗?

先感谢您!