a year ago
Problem Summary
My Railway service is configured to run a Node.js Express API but is serving static files instead of executing my API routes. This is breaking my Facebook OAuth callback and all API endpoints.
Expected Behavior
- Service should run my Node.js Express server
- API routes like
/api/auth/facebook/callbackshould execute server-side code - Should return JSON responses from my Express routes
Actual Behavior
- API routes return HTML (React app's index.html) instead of executing Node.js code
- Browser requests static assets after every API call
- Network logs show
Content-Type: text/htmlandContent-Disposition: inline; filename="index.html" - Call stack shows static file requests originating from API endpoints
Service Configuration
Build Command:cd backend && npm installStart Command:cd backend && node server.jsWatch Paths:
backend/**
!frontend/**
package.jsonEvidence
- Server logs show Node.js starting correctly:
INFO Accepting connections at http://localhost:3001 - But API calls trigger static file serving:
GET /api/auth/facebook/callback → Returns 200 but serves index.html
Followed by:
GET /static/js/main.379b7289.js
GET /static/css/main.94535c51.css - Network inspector shows:
- Status: 200 OK
- Content-Type: text/html; charset=utf-8
- Content-Disposition: inline; filename="index.html"
Repository Structure
project-root/
├── frontend/ (React app)
├── backend/ (Node.js Express API)
└── package.jsonWhat I've Tried
- Set correct build/start commands
- Added watch paths to isolate backend
- Verified server starts successfully
- Railway still treats service as static site
Question
How can I force Railway to recognize this as a Node.js API service instead of a static site? It seems like Railway has "learned" to serve static files and won't switch back to running the Node.js server, even with correct configuration.
Service Name: whydiditdie-app-clean Service Type: Should be Node.js API, but behaving like static site
2 Replies
a year ago
1. Go to Railway Dashboard
- Open your Railway project
- Click on your service (
whydiditdie-app-clean)
2. Access Service Settings
- Click on the Settings tab
- Scroll down to find Source Repo section
3. Configure Root Directory
- Find the Root Directory field
- Set it to:
backend - Click Save
4. Update Build & Start Commands
- In the same Settings page, find Build Command
- Set it to:
npm install - Find Start Command
- Set it to:
node server.js - Click Save
5. Remove Watch Paths
- Find Watch Paths section
- Delete all watch paths (leave it empty)
- Click Save
6. Force Redeploy
- Go to Deployments tab
- Click Deploy button to trigger a new deployment
After redeployment, your logs should show:
Building from backend directory...
Running: npm install
Running: node server.js
INFO Accepting connections at http://localhost:3001And your API endpoints like /api/auth/facebook/callback will return JSON instead of HTML.
idiegea21
**1\. Go to Railway Dashboard** * Open your Railway project * Click on your service (`whydiditdie-app-clean`) **2\. Access Service Settings** * Click on the **Settings** tab * Scroll down to find **Source Repo** section **3\. Configure Root Directory** * Find the **Root Directory** field * Set it to: `backend` * Click **Save** **4\. Update Build & Start Commands** * In the same Settings page, find **Build Command** * Set it to: `npm install` * Find **Start Command** * Set it to: `node server.js` * Click **Save** **5\. Remove Watch Paths** * Find **Watch Paths** section * **Delete all watch paths** (leave it empty) * Click **Save** **6\. Force Redeploy** * Go to **Deployments** tab * Click **Deploy** button to trigger a new deployment After redeployment, your logs should show: ``` Building from backend directory... Running: npm install Running: node server.js INFO Accepting connections at http://localhost:3001 ``` And your API endpoints like `/api/auth/facebook/callback` will return JSON instead of HTML.
a year ago
Thank you for your response, i truly appreciate it.
The issue seems more complex than i looks, i already had your suggestion in place, when i do finally figure it out, i'll update it here.
