You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Parcel构建Chrome扩展时构建阶段出现unsafe-eval错误如何解决?

解决Parcel构建Chrome扩展后弹窗白屏(unsafe-eval CSP错误)

问题原因

Parcel生产构建时,默认的代码压缩或优化逻辑可能生成依赖eval()/动态代码执行的片段,而Chrome扩展的Content Security Policy(CSP)默认禁止unsafe-eval,导致build后的扩展加载失败。开发阶段Parcel的热更新机制或宽松的开发配置跳过了这类限制,所以不会报错。

解决方案

1. 配置Parcel禁用生成eval()的优化

在项目根目录的package.json中添加Parcel的压缩配置,强制Terser(Parcel默认的JS压缩器)禁用eval相关的压缩选项:

"parcel": {
  "compressors": {
    ".js": [
      "@parcel/compressor-terser",
      {
        "terserOptions": {
          "compress": {
            "eval": false
          }
        }
      }
    ]
  }
}

重新执行npm run build,Parcel会生成不依赖eval()的代码,符合Chrome扩展的CSP要求。

2. 排查并移除项目中手动编写的动态执行代码

检查你的代码中是否存在eval()、new Function()这类动态执行逻辑,替换为静态代码实现。这类代码在Chrome扩展的生产环境中会直接触发CSP限制,必须移除。

3. (不推荐,仅应急使用)调整扩展Manifest的CSP

如果上述方法无法解决,且你确认需要unsafe-eval,可以修改扩展的manifest.json(仅适用于Manifest V2,Manifest V3不允许添加unsafe-eval):

"content_security_policy": "script-src 'self' 'unsafe-eval' 'wasm-unsafe-eval'; object-src 'self'"

注意:此操作会降低扩展的安全性,尽量避免使用。

内容的提问来源于stack exchange,提问作者sdfsdf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 06:36:32