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

Vite打包的Rails项目引入filestack-js报Object原型错误如何解决?

问题原因

这个错误不是循环依赖导致的,核心原因是Vite加载了filestack-js适配Node环境的ESM代码,其中依赖了Node原生的stream模块,浏览器环境下的stream polyfill没有实现Writable接口,导致继承时传入的原型为undefined触发报错。
filestack-js的通用ESM产物没有做环境切割,同时包含了Node和浏览器的请求适配器代码,Vite构建浏览器端代码时没有自动过滤Node专用模块,最终加载了需要Node原生能力的http适配器逻辑。

可行解决方案
  • 方案1:直接导入浏览器专用版本
    修改导入语句为:
    import * as filestack from 'filestack-js/build/browser/filestack.esm.js';
    
    这个是官方预先构建的浏览器专用ESM包,已经移除了所有Node相关的依赖和适配器逻辑,无需修改其他配置即可正常使用。
  • 方案2:配置Vite别名统一替换入口
    如果项目多处引用了filestack-js不想逐个修改,可以在vite.config.js的resolve配置中添加别名:
    export default defineConfig({
      resolve: {
        alias: {
          'filestack-js': 'filestack-js/build/browser/filestack.esm.js',
        }
      }
    })
    
    配置后所有对filestack-js的导入都会自动指向浏览器版本,原有代码无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:24:01