typescript - Hur får man miljövariabler på klientsidan med Next.js?
Jag vill läsa miljövariabel i Next.js, hur skickar man data till datadogRum.init?
// _app.tsx
import React from "react";
import { useEffect } from "react";
import type { AppProps } from "next/app";
import { datadogRum } from "@datadog/browser-rum";
export default function App({ Component, pageProps }: AppProps) {
useEffect(() => {
datadogRum.init({
applicationId: applicationID, // can't use process.env.NEXT_PUBLIC_DATADOG_APPLICATION_ID directly here
...
});
datadogRum.startSessionReplayRecording();
});
return (
...
);
}
App.getInitialProps = async () => {
return {
applicationID: process.env.NEXT_PUBLIC_DATADOG_APPLICATION_ID,
};
};
Det här sättet kan inte få värdet på applicationID.
Svar #1
Du behöver inte skicka miljövariabeln från getInitialProps. Du kan komma åt den direkt inne i useEffect, du behöver bara se till att process.env.NEXT_PUBLIC_DATADOG_APPLICATION_ID är definierad innan du initialiserar datadogRum.init för att undvika typkonflikter.
export default function App({ Component, pageProps }: AppProps) {
useEffect(() => {
if (typeof process.env.NEXT_PUBLIC_DATADOG_APPLICATION_ID !== "undefined")
datadogRum.init({
applicationId: process.env.NEXT_PUBLIC_DATADOG_APPLICATION_ID
...
});
datadogRum.startSessionReplayRecording();
}
});
return (
...
);
}
