eval 函数使应用程序无法在生产环境中运行

eval function makes app not work on production environment

我正在将 aurelia 应用程序部署到生产环境中,但我遇到了结果代码包含 eval 函数调用的问题,不幸的是我的生产环境不允许这样做。

我在应用程序 运行 上遇到此错误:

vendors~2a42e354.02107019925d746ff1ac.chunk.js:10 Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self'".

    at Object.GAND (vendors~2a42e354.02107019925d746ff1ac.chunk.js:10)
    at __webpack_require__ (runtime~app.02107019925d746ff1ac.bundle.js:85)
    at Object.0 (app~01e7b97c.02107019925d746ff1ac.chunk.js:44)
    at __webpack_require__ (runtime~app.02107019925d746ff1ac.bundle.js:85)
    at checkDeferredModules (runtime~app.02107019925d746ff1ac.bundle.js:46)
    at Array.webpackJsonpCallback [as push] (runtime~app.02107019925d746ff1ac.bundle.js:33)
    at app~5a11b65b.02107019925d746ff1ac.chunk.js:1

现在我想知道是否有一种方法可以通过排除 eval 函数来为生产构建 aurelia?

更新

我猜这可能是关于 webpack 的。如果是,有没有办法在 webpack 中更改此配置?

最后我和我的同事发现了这个问题。虽然这个问题似乎是我们的情况所特有的,但我分享它可能会帮助其他人发现类似的问题:

主要问题是在开发模式下构建项目是问题的根源。开发类型构建的输出包括 eval 多个模块中的函数调用。我在生产模式下进行构建就足够了。

但第二个错误是我认为我在使用此命令时正在生产模式下构建:

au build --prod

我在使用 Angular 的 CLI 时错过了这个命令。正确的命令是:

au build --env prod

所以webpack的配置是生产环境不使用eval调用