diff --git a/Dockerfile b/Dockerfile index c15d03e..3b5b314 100644 --- a/Dockerfile +++ b/Dockerfile @@ -81,6 +81,9 @@ RUN npm ci --only=production && npm cache clean --force COPY --from=build --chown=nextjs:nodejs /app/dist ./dist COPY --from=build --chown=nextjs:nodejs /app/shared ./shared +# Create symlink for public files to be accessible from dist +RUN ln -sf /app/dist/public /app/dist/public + # Create uploads directory with proper permissions RUN mkdir -p /app/uploads && chown -R nextjs:nodejs /app/uploads diff --git a/attached_assets/Pasted-Error-ERR-MODULE-NOT-FOUND-Cannot-find-package-vite-imported-from-app-dist-index-js-at--1754924794519_1754924794519.txt b/attached_assets/Pasted-Error-ERR-MODULE-NOT-FOUND-Cannot-find-package-vite-imported-from-app-dist-index-js-at--1754924794519_1754924794519.txt new file mode 100644 index 0000000..d33c8ac --- /dev/null +++ b/attached_assets/Pasted-Error-ERR-MODULE-NOT-FOUND-Cannot-find-package-vite-imported-from-app-dist-index-js-at--1754924794519_1754924794519.txt @@ -0,0 +1,188 @@ +Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js + + at packageResolve (node:internal/modules/esm/resolve:873:9) + + at moduleResolve (node:internal/modules/esm/resolve:946:18) + + at defaultResolve (node:internal/modules/esm/resolve:1188:11) + + at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12) + + at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25) + + at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38) + + at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38) + + at ModuleJob._link (node:internal/modules/esm/module_job:130:49) { + + code: 'ERR_MODULE_NOT_FOUND' + +} + +Node.js v20.19.4 + +node:internal/modules/esm/resolve:873 + + throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); + + + +^ + +Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js + + at packageResolve (node:internal/modules/esm/resolve:873:9) + + at moduleResolve (node:internal/modules/esm/resolve:946:18) + + at defaultResolve (node:internal/modules/esm/resolve:1188:11) + + at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12) + + at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25) + + at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38) + + at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38) + + at ModuleJob._link (node:internal/modules/esm/module_job:130:49) { + + code: 'ERR_MODULE_NOT_FOUND' + +} + +Node.js v20.19.4 + +node:internal/modules/esm/resolve:873 + + throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); + + + +^ + +Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js + + at packageResolve (node:internal/modules/esm/resolve:873:9) + + at moduleResolve (node:internal/modules/esm/resolve:946:18) + + at defaultResolve (node:internal/modules/esm/resolve:1188:11) + + at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12) + + at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25) + + at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38) + + at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38) + + at ModuleJob._link (node:internal/modules/esm/module_job:130:49) { + + code: 'ERR_MODULE_NOT_FOUND' + +} + +Node.js v20.19.4 + +node:internal/modules/esm/resolve:873 + + throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); + + + +^ + +Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js + + at packageResolve (node:internal/modules/esm/resolve:873:9) + + at moduleResolve (node:internal/modules/esm/resolve:946:18) + + at defaultResolve (node:internal/modules/esm/resolve:1188:11) + + at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12) + + at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25) + + at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38) + + at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38) + + at ModuleJob._link (node:internal/modules/esm/module_job:130:49) { + + code: 'ERR_MODULE_NOT_FOUND' + +} + +Node.js v20.19.4 + +node:internal/modules/esm/resolve:873 + + throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); + + + +^ + +Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js + + at packageResolve (node:internal/modules/esm/resolve:873:9) + + at moduleResolve (node:internal/modules/esm/resolve:946:18) + + at defaultResolve (node:internal/modules/esm/resolve:1188:11) + + at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12) + + at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25) + + at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38) + + at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38) + + at ModuleJob._link (node:internal/modules/esm/module_job:130:49) { + + code: 'ERR_MODULE_NOT_FOUND' + +} + +Node.js v20.19.4 + +node:internal/modules/esm/resolve:873 + + throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null); + + + +^ + +Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /app/dist/index.js + + at packageResolve (node:internal/modules/esm/resolve:873:9) + + at moduleResolve (node:internal/modules/esm/resolve:946:18) + + at defaultResolve (node:internal/modules/esm/resolve:1188:11) + + at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:642:12) + + at #cachedDefaultResolve (node:internal/modules/esm/loader:591:25) + + at ModuleLoader.resolve (node:internal/modules/esm/loader:574:38) + + at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:236:38) + + at ModuleJob._link (node:internal/modules/esm/module_job:130:49) { + + code: 'ERR_MODULE_NOT_FOUND' + +} + +Node.js v20.19.4 + + + + + \ No newline at end of file diff --git a/server/index.production.ts b/server/index.production.ts index cc32776..9020385 100644 --- a/server/index.production.ts +++ b/server/index.production.ts @@ -1,10 +1,13 @@ import express, { type Request, Response, NextFunction } from "express"; -import { setupVite, serveStatic } from "./vite.js"; - -// Production routes - simplified for Docker deployment import { createServer, type Server } from "http"; import { storage } from "./storage.js"; import { setupLocalAuth, requireAuth } from "./localAuth.production.js"; +import { fileURLToPath } from 'url'; +import { dirname, join } from 'path'; + +// Get directory paths +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); console.log('🐳 PRODUCTION: Starting LogiFlow application'); @@ -124,8 +127,20 @@ app.use((err: any, _req: Request, res: Response, _next: NextFunction) => { throw err; }); -// Production setup - serve static files -serveStatic(app); +// Serve static files directly in production (no Vite) +const publicPath = join(__dirname, 'public'); +console.log('🐳 Serving static files from:', publicPath); + +app.use('/assets', express.static(join(publicPath, 'assets'))); +app.use('/', express.static(publicPath)); + +// SPA fallback - serve index.html for all non-API routes +app.get('*', (req, res, next) => { + if (req.path.startsWith('/api/')) { + return next(); + } + res.sendFile(join(publicPath, 'index.html')); +}); const port = process.env.PORT ? parseInt(process.env.PORT) : 3000; server.listen(port, "0.0.0.0", () => {