部署MERN Discord克隆项目至Railway遇错及跨浏览器异常求助
Discord克隆项目部署与浏览器兼容性问题排查
一、Chrome/Edge网络请求Pending问题
前端部署在Vercel,Firefox可正常运行,但Chrome和Edge中所有网络请求一直处于pending状态,可从以下方向排查:
- 检查CORS配置:Chrome对跨域请求的校验比Firefox严格,确认后端Railway的CORS设置是否允许Vercel域名访问。需保证响应头包含
Access-Control-Allow-Origin(指定Vercel域名或通配符)、Access-Control-Allow-Methods等必要字段。 - 分析请求详情:打开Chrome DevTools的Network面板,查看pending请求的类型、是否有预检OPTIONS请求失败。如果是WebSocket连接挂起,检查后端WebSocket服务是否正常,以及Railway的端口/安全组是否开放对应端口。
- 清理浏览器缓存:Chrome可能缓存了旧的请求配置,试试强制刷新页面(Ctrl+Shift+R)或清空缓存后重新测试。
- 排查安全策略冲突:检查前端是否使用了仅Firefox兼容的API/请求头,或者Chrome的Content Security Policy(CSP)是否阻止了请求。查看DevTools的Console面板是否有相关报错信息。
二、Railway部署前端失败(ERESOLVE依赖冲突)
Railway构建时执行npm ci出现依赖解析失败,核心错误为npm ERR! ERESOLVE could not resolve,完整构建日志如下:
============== Using Nixpacks ============== Inline cache enabled no image tag to read cache from ╔═════════ Nixpacks v1.0.0 ═════════╗ ║ setup │ nodejs-16_x, npm-8_x ║ ║───────────────────────────────────║ ║ install │ npm ci ║ ║───────────────────────────────────║ ║ build │ npm run build ║ ║───────────────────────────────────║ ║ start │ npm run start ║ ╚═══════════════════════════════════╝ #1 [internal] load build definition from Dockerfile #1 sha256:8877270a0c7cc13a2a9d5d8d7622cdc0ed73b70ab957d081f5d2851376bd3d8b #1 transferring dockerfile: 2.08kB done #1 DONE 0.1s #2 [internal] load .dockerignore #2 sha256:2affaad88737ba21b452b724bb2eb7f99ebe9375f3ecc65cb617a265f26c24d8 #2 transferring context: #2 transferring context: 2B done #2 DONE 0.2s #3 [internal] load metadata for ghcr.io/railwayapp/nixpacks:ubuntu-1671044363 #3 sha256:d2df4677b7c4c8365aa628f14d4cbdd9867466b6b454c21060180de4b7936a2e #3 DONE 0.2s #4 [stage-0 1/10] FROM ghcr.io/railwayapp/nixpacks:ubuntu-1671044363@sha256:4df36f942799b8b727c8648ca4fa05d9cd2526e41e7994665082c0f7ef03d95b #4 sha256:a20b8f1ac783d9d00f7c673a9ef0cf3b8f0aaee89856a86f7aff78cda1934897 #4 DONE 0.0s #5 [stage-0 2/10] WORKDIR /app/ #5 sha256:46f35bb14209f31cddb6d0e80d42b3ceb58d2f45672a3486e22a069140ac06a3 #5 CACHED #6 [internal] load build context #6 sha256:5648a1c35d09c4517e30329702fb9cb16d3deaa95854bbf8005030d88d65df40 #6 transferring context: 1.35MB 0.0s done #6 DONE 0.1s #7 [stage-0 3/10] COPY .nixpacks/nixpkgs-ffca9ffaaafb38c8979068cee98b2644bd3f14cb.nix .nixpacks/nixpkgs-ffca9ffaaafb38c8979068cee98b2644bd3f14cb.nix #7 sha256:27a0f7b0a4acef0e435ab6d4d2af6e3163455490546099ce36a6ce8090fa6663 #7 CACHED #8 [stage-0 4/10] RUN nix-env -if .nixpacks/nixpkgs-ffca9ffaaafb38c8979068cee98b2644bd3f14cb.nix && nix-collect-garbage -d #8 sha256:b14288120fda49c3952311baf2b490fed38e5c18b07a41507a8fa40b078b7061 #8 CACHED #9 [stage-0 5/10] RUN printf '\nPATH=/app/node_modules/.bin:$PATH' >> /root/.profile #9 sha256:12dcf6a42bf1344db5b7a02483f2b846eaf2f6bd1e5f24337f79a8189bc2ff93 #9 DONE 0.4s #10 [stage-0 6/10] COPY . /app/. #10 sha256:ce0a407cd50a1ccbe3be23e8717eb5b1978e54736f3716257765a0c50bc6ff1f #10 DONE 0.1s #11 [stage-0 7/10] RUN --mount=type=cache,id=s/b947d48a-6811-4bd7-be53-d870d96fde71-/root/npm,target=/root/.npm npm ci #11 sha256:292fe72abf96a75827c016a9bb758e94e0a7fc5724f193e1c1830ac7b3ac5920 #11 0.730 npm WARN config production Use `--omit=dev` instead. #11 1.915 npm ERR! code ERESOLVE #11 1.919 npm ERR! ERESOLVE could not resolve #11 1.919 npm ERR!
解决步骤:
- 修复依赖冲突:
npm ci严格遵循package-lock.json安装,若lock文件和package.json版本不一致就会报错。按以下操作:- 删除本地
node_modules和package-lock.json - 执行
npm install重新生成lock文件 - 提交更新后的
package-lock.json到仓库,重新部署到Railway
- 删除本地
- 指定Node.js版本:Railway当前用的是Node.js 16 + npm 8,若项目依赖对版本敏感,在项目根目录创建
.nvmrc文件(比如写入18),让Nixpacks使用对应版本的npm - 替换安装命令:若冲突暂时无法解决,可在Railway项目设置里把安装命令从
npm ci改成npm install,它会自动尝试解决依赖冲突,但稳定性略逊于npm ci
内容的提问来源于stack exchange,提问作者Ripper
相关产品推荐
相关产品推荐

