app-config icon indicating copy to clipboard operation
app-config copied to clipboard

Cannot build/deploy an application using `@app-config/main` on vercel

Open stevejpurves opened this issue 1 year ago • 2 comments

Hi There!

I've been migrating my application to use @app-config/main and have everthing working locally / in development but I hit problems when attempting to deploy to vercel. The specific error I am seeing is:

Cannot find module 'asn1.js'
Require stack:
- /var/task/node_modules/openpgp/dist/openpgp.js
- /var/task/node_modules/@app-config/encryption/dist/encryption.js
- /var/task/node_modules/@app-config/encryption/dist/index.js
- /var/task/node_modules/@app-config/main/dist/index.js
Did you forget to add it to "dependencies" in `package.json`?

I'm having a hard time tracking this down but wonder if it's a known/familiar issue when bundling for serverless (my application is remix.run built with vite)?

Alternatively, I am using @app-config but I'm not using encryption for secrets, in that case is it possible to exclude the @app-config/encryption package by say using @app-config/config directly? are potentially mitigating this issue?

stevejpurves avatar Nov 20 '24 17:11 stevejpurves

I've managed to work around this as follows, totally open to suggestions on a better way though, especially to avoid the hard type assignment.

// app-config.server.ts
import { loadValidatedConfig } from '@app-config/config';
import type { Config } from 'app-config';

let config: Awaited<ReturnType<typeof loadValidatedConfig>> | null = null;

export async function getConfig(): Promise<Config> {
  if (!config) {
    config = await loadValidatedConfig();
  }

  return config.fullConfig as unknown as Config;
}
// app-config.meta.yml
generate:
  - { file: '@types/app-config/index.d.ts', augmentModule: false }

stevejpurves avatar Nov 21 '24 11:11 stevejpurves

I've tried this solution but I still get Error: Cannot find module 'asn1.js'.

NJKruczek avatar Feb 03 '25 05:02 NJKruczek