gpt4 book ai didi

javascript - 如何仅在 create-react-app 的生产构建文件中包含 JavaScript 库?

转载 作者:行者123 更新时间:2023-12-01 14:01:05 25 4
gpt4 key购买 nike

我正在尝试添加一个 JavaScript 库,该库仅包含在由 create-react-app 生成的生产构建文件中.

做到这一点的最佳方法是什么?

具体来说,我试图包括 Rollbar.js客户端错误监控库。我不希望每次在开发/测试环境中出现错误时都触发它,所以我只希望它包含在运行时生成的文件中 npm run build .

最佳答案

tpdietz 提供的答案非常好,可能适用于许多图书馆。

但是,我尝试使用的这个特定库 (Rollbar) 需要在任何其他 JavaScript(例如 React 和 ReactDOM)之前加载,否则它无法捕获所有错误。由于那些其他库是通过 import 加载的声明,我不能使用 require在他们面前的声明index.js .

我找到的解决方案(感谢 GitHub user rokob 与 Rollbar.js 项目)是引用 NODE_ENV来自 index.html 内的变量文件,如下所述:https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#referencing-environment-variables-in-the-html

在我的顶部 index.html文件,在 <script> 中标签,我可以设置一个变量为 %NODE_ENV% . create-react-app 的构建过程将自动解析该变量并插入环境名称,例如“生产”或“开发”,在最后 index.html文件。然后,我可以在执行任何内联 JavaScript 之前检查该变量是否等于“生产”。

示例 index.html :

<!doctype html>
<html lang="en">
<head>
<script>
var environment = "%NODE_ENV%";
if (environment === "production") {
// code here will only run when index.html is built in production environment
// e.g. > $ NODE_ENV="production" npm run build
}
</script>

在 Rollbar.js 的特定情况下,我只需要传递一个带有环境名称的配置参数,所以没有 if声明是必要的:
var _rollbarConfig = {
...
enabled: ('%NODE_ENV%' === 'production') //returns true if 'production'
...
};

这是 Github 上的问题,rokob 给了我这个解决方案: https://github.com/rollbar/rollbar.js/issues/583

关于javascript - 如何仅在 create-react-app 的生产构建文件中包含 JavaScript 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48955060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com