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

如何在Rails 5应用的Webpacker环境中使用浏览器端Prettier Standalone

解决方案

你本地开发正常但生产构建失败的核心原因是引入了默认的Node.js版本Prettier,该版本包含大量Node专属API调用,Rails Webpacker生产环境构建时会严格检查依赖完整性,检测到浏览器环境不存在的Node内置模块就会抛出错误,按以下步骤修改即可解决:

步骤1:修正Prettier导入路径

将原来的普通导入替换为浏览器专用的Standalone版本导入,避免引入Node专属逻辑:

// 错误导入(默认引入Node端版本)
// import prettier from 'prettier';

// 正确导入(浏览器专用Standalone版本)
import prettier from 'prettier/standalone';
import parserCss from 'prettier/parser-postcss';

// 原有格式化逻辑保持不变
prettier.format(".foo{color: red;}", {
  parser: "css",
  plugins: [parserCss],
});

步骤2:配置Webpacker忽略Node内置模块

修改Rails Webpacker配置文件 config/webpack/environment.js,新增配置告诉Webpack将Prettier依赖的Node内置模块标记为空,避免构建报错:

const { environment } = require('@rails/webpacker')

// 新增以下配置
environment.config.set('node', {
  fs: 'empty',
  path: 'empty',
  module: 'empty',
  os: 'empty',
  crypto: 'empty'
})

module.exports = environment

步骤3:本地验证生产构建

修改完成后在项目根目录执行以下命令,提前验证生产环境构建是否正常,无需部署到服务器再排查:
RAILS_ENV=production bin/webpack
如果执行完成没有报错,说明配置生效,后续部署就不会出现构建失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:06:04