在某些组件中使用 usercentrics(通过 gtm)和 id 时出错

Error when using usercentrics (via gtm) and id's in some components

我们尝试从我们自己实施的 CMP 切换到以用户为中心。因此,我们通过页面上的 gtm 集成了 usercentrics。我意识到该元素只显示在我们的子页面上,在我们的根页面上不可见。 两天后再次删除和添加组件。当我从组件中删除 id={"process"} 时,我发现 usercentrics 能够加载。我在页面上多次使用 id 标签作为 smoothscroll 插件。但是只有应用在工艺上的和应用在接触部分的才是导致下面错误的。

在我删除了插件和几乎所有的 id 之后,我得到了以下错误:

Uncaught TypeError: Cannot read property 'REACT_APP_SC_ATTR' of undefined
    at bundle_legacy.js:1
    at bundle_legacy.js:15

我们使用带有 Typescript 的 Gatsby Stack 和 gatsby-plugin-smoothscroll 进行滚动。

我们也通过 Gatsby 插件实现了 gtm:gatsby-plugin-google-tagmanager

import React from "react";
import colors from "../../../../config/GlobalStyles";
import {Container, Grid, makeStyles, Typography} from "@material-ui/core";

// @ts-ignore
import infoGraphic from "../../../../images/root/process/infographic.webp";
import {graphql, useStaticQuery} from "gatsby";
import Markdown from "markdown-to-jsx";

const useStyles = makeStyles((theme) => ({
    contentWrapper: {
        paddingTop: "50px"
    },
    container: {
        paddingTop: "50px",
        backgroundColor: "white",
    },
    headline: {
        fontWeight: 600,
        color: colors.main
    },
    secondHeadline: {
        fontFamily: "Mackay",
        color: colors.main,
        fontWeight: 400,
    },
    infoGraphicWrapper: {
        overflow: "scroll",
        [theme.breakpoints.down('sm')]: {
            marginTop: "50px",
        },
        "& img": {
            [theme.breakpoints.down('sm')]: {
                maxWidth: "200%"
            }
        }
    }
}));

export default function ProcessSection() {
    const classes = useStyles();
    const data = useStaticQuery(query);

    return (
        <section>
            <Container className={classes.container}>
                <Typography variant={"h2"} component={"h2"} className={classes.headline}>
                    <Markdown>
                        {data.strapiHome.process.headline}
                    </Markdown>
                </Typography>
                <Typography variant={"h2"} component={"h2"} className={classes.secondHeadline}>
                    <Markdown>
                        {data.strapiHome.process.secondHeadline}
                    </Markdown>
                </Typography>
                <Grid container className={classes.contentWrapper} justify={"space-between"}>
                    <Grid item xl={4} lg={4} md={4} sm={12} xs={12}>
                        <Typography component={"div"} variant={"body2"}>
                            <Markdown>{data.strapiHome.process.text}</Markdown>
                        </Typography>
                    </Grid>
                    <Grid item xl={7} lg={7} md={7} sm={12} xs={12} className={classes.infoGraphicWrapper}>
                        <img src={infoGraphic} alt={"alt text"} />
                    </Grid>
                </Grid>
            </Container>
        </section>
    );
}

const query = graphql`
    query {
        strapiHome {
            process {
                headline
                secondHeadline
                text
            }
        }
    }
`;

我不知道这是从哪里来的,也不知道环境变量是什么意思。

我认为你的问题不在代码中。在我看来,它与 .env 文件有关。

如果您在某处使用 process.env.REACT_APP_SC_ATTR,请检查 .env 文件以查看是否定义了 REACT_APP_SC_ATTR

.env 文件就像一个全局配置。我们通常添加服务器 url、端口、生产模式,诸如此类。

我能够通过从我的组件中删除所有 ID 并重新添加其中一些来解决问题。

我无法理解为什么会这样。