#__dirname is not defined in ES module scope. Angular SSR + Google Secret Manager

9 messages · Page 1 of 1 (latest)

agile helm
#

sample from server.ts

const client = new SecretManagerServiceClient();
async function getFirebaseConfig(): Promise<FirebaseOptions> {
try {
  const secretName = 'projects/1234/secrets/firebase-client-config';
  const version = 'latest'; // Specify the version
  const [versionData] = await client.accessSecretVersion({
    name: `${secretName}/versions/${version}`,
  });
  if (!versionData || !versionData.payload || !versionData.payload.data) {
    throw new Error('Secret version payload is missing');
  }
  const payload = versionData.payload.data.toString();
  const firebaseConfig = JSON.parse(payload);
  console.log('Firebase Config Server :', firebaseConfig);
  return firebaseConfig;
} catch (error) {
  console.error(`Error accessing secret version: ${error}`);
  throw error;
}
}
export async function app(): Promise<express.Express> {
const server = express();
const serverDistFolder = dirname(fileURLToPath(import.meta.url));
const browserDistFolder = resolve(serverDistFolder, '../browser');
const indexHtml = join(serverDistFolder, 'index.server.html');
// pass firebase config to client with transferState
const firebasePayload = await getFirebaseConfig();
const FIREBASE_CONFIG_KEY = makeStateKey<string>('firebaseConfigKey');
const transferState = new TransferState();
transferState.set(FIREBASE_CONFIG_KEY, ' test ');
console.log('Firebase Config set in TransferState:', firebasePayload);
const commonEngine = new CommonEngine();
server.set('view engine', 'html');
server.set('views', browserDistFolder);
server.get(
  '*.*',
  express.static(browserDistFolder, {
    maxAge: '1y',
  })
);
server.get('*', (req, res, next) => {
  const { protocol, originalUrl, baseUrl, headers } = req;
  commonEngine
    .render({
      bootstrap,

molten ibex
#

Hey Abdulali! Saw your comment, and I saw your were trying to do the same thing as I was trying to do: use TransferState in server.ts. How did you make it work? It doesn't for me

agile helm
#

hi @molten ibex

#

This approach does not work for me

#

maybe setting a new route and making a request inside your app is the best way to communicate with your backend

molten ibex
#

Thank you! That's what I wanted to avoid! But seems like I have found a solution! I will let you know if it works

agile helm
#

@molten ibex great! , if that solution is working please let me know. i want that so badly 🙂

molten ibex