Theo's Typesafe CultTTC
Theo's Typesafe Cult8mo ago
3 replies
moaaz

onComplete doesn't work in production but works in development

I have an express app that looks something like this
import express from 'express';
import cors from 'cors'
import { uploadRouterHandler } from './routes/uploadthing.route';
const PORT = process.env.SERVER_PORT;

const app = express();

app.enable("trust proxy");

app.use(cors());
app.options('*ss', cors());


app.use("/api/uploadthing", uploadRouterHandler);

app.use(express.json());
app.use('/api', documentRoutes)

}
app.listen(PORT, () => {
    console.log("server listening on port: " + PORT)
})

My UT route builder looks something like this:
import { createRouteHandler, createUploadthing, type FileRouter } from 'uploadthing/express';
import { UploadThingError } from "uploadthing/server";
const f = createUploadthing();
export const uploadRouter = {
    videoAndImage: f({
        image: {
            maxFileSize: "4MB",
            maxFileCount: 4,
        },
        video: {
            maxFileSize: "16MB",
            maxFileCount: 10
        },
        blob: { maxFileSize: "8GB", maxFileCount: 10 },
    }).middleware(async ({ req }) => {
        const session = // check session
        if (!session) {
            throw new UploadThingError("Not authnticated");
        }
        req.session = session.session as Session;
        req.user = session.user as User;
        return { user: req.user, session: req.session }
    }).onUploadComplete(async ({ file, metadata }) => {
      
        if (!file) {
            throw new UploadThingError("no files after uploading")
        }
        // insert document to db 
    }),
} satisfies FileRouter;

export const uploadRouterHandler = createRouteHandler({
    router: uploadRouter,
})


I have deployed my app to railway on "https://<somename>.up.railway.app"
I can't get callbacks to work in prod for the life of me although it works in dev perfectly fine.
Was this page helpful?