You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Railway平台WordPress+Node.js单体仓库部署失败求助

Railway部署WordPress+Node.js单体仓库报错:stream did not contain valid UTF-8

问题背景

本地通过Docker Compose可正常运行的单体仓库(包含WordPress官方下载目录和Node.js服务),部署到Railway平台时,Nixpacks构建失败,报错读取wordpress/wp-includes/js/tw-sack.js时出现“stream did not contain valid UTF-8”错误。

目录结构:

├── app/          # Node.js服务目录(含Dockerfile)
├── wordpress/    # WordPress目录(含Dockerfile)
└── docker-compose.yml

相关配置文件

WordPress的Dockerfile

FROM wordpress:6.6.1-php8.1-apache

WORKDIR /var/www/html

# 安装PostgreSQL扩展
RUN apt-get update \
    && apt-get install -y libpq-dev \
    && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
    && docker-php-ext-install pdo pdo_pgsql pgsql
    

COPY . .

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf

# 暴露端口
EXPOSE PORT

CMD ["apache2-foreground"]

docker-compose.yml

version: "3.7"

services:
  app:
    build:
      context: app
      dockerfile: Dockerfile
    networks: 
      - tropikode-app
    volumes:
      - ./app:/usr/src/app
    ports:
      - PORT:PORT
    command: ["npx", "nodemon", "index.js"]

  wordpress:
    build: 
      context: wordpress
      dockerfile: Dockerfile
    networks:
      - tropikode-app
    volumes:
      - ./wordpress:/var/www/html
    ports:
      - PORT:PORT
    command: ["apache2-foreground"]

networks:
  tropikode-app:
    driver: bridge

错误信息

[Region: us-west1]

==============

Using Nixpacks

==============


context: 31daf3c904b83b14cdf6e79f9497df80

Nixpacks build failed
 

Error: Error reading wordpress/wp-includes/js/tw-sack.js
 

Caused by:

stream did not contain valid UTF-8

解决方法

1. 直接用Docker Compose部署(最省心)

Railway支持直接识别根目录的docker-compose.yml,无需走Nixpacks自动构建流程:

  • 在Railway项目中添加服务时,选择「Docker Compose」选项,关联你的仓库。
  • 平台会自动按照本地Docker Compose的逻辑构建两个服务,完全避开Nixpacks的编码检测问题。

2. 修复tw-sack.js的编码损坏问题

该文件大概率在下载或Git提交过程中出现编码损坏:

  • 从WordPress官方下载对应6.6.1版本的tw-sack.js文件(路径wp-includes/js/tw-sack.js),替换仓库中的同名文件。
  • 提交修改后的文件到仓库,重新触发Railway构建。

3. 配置Nixpacks忽略WordPress目录(若Node.js为核心服务)

如果你的核心业务是Node.js服务,WordPress仅作为附属组件,可让Nixpacks只处理app目录:

  • 在根目录创建nixpacks.toml文件,内容如下:
[phases.setup]
ignore = ["wordpress/**/*"]
  • 配置后Nixpacks会跳过WordPress目录的文件检测,仅构建Node.js服务。后续WordPress可单独部署,或继续使用Docker Compose方式部署。

4. 统一仓库文件编码规范

确保仓库内所有文件均为UTF-8编码:

  • 用VS Code打开tw-sack.js,查看右下角编码标识,若不是UTF-8则切换编码后保存,重新提交到仓库。
  • 配置Git默认编码避免后续出现编码问题:
git config --global core.encoding utf-8
git config --global gui.encoding utf-8

内容的提问来源于stack exchange,提问作者Jovanny Ruiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 01:40:18