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

如何在使用Propshaft的Rails 7项目中为JS库传入NODE_ENV

解决Rails 7中Importmap加载tippy.js时process未定义的问题

浏览器环境本身没有Node.js的process对象,tippy.js依赖这个变量判断运行环境,不用Gulp或Rollup也能搞定,直接在全局模拟出process.env.NODE_ENV即可:

  • 方法一:单独创建shim文件

    1. 在app/javascript目录下新建process_shim.js,写入以下代码:
      window.process = {
        env: {
          NODE_ENV: Rails.env === 'production' ? 'production' : 'development'
        }
      };
      
      这里直接用Rails内置的Rails.env匹配NODE_ENV的环境值,自动对应开发/生产环境。
    2. 在app/javascript/application.js的最顶部导入这个shim,确保在tippy.js之前加载:
      import './process_shim'
      import 'tippy.js'
      // 其他导入或业务代码...
      
  • 方法二:直接在application.js开头定义
    不想多建文件的话,直接在application.js所有导入语句之前加这段代码:

    // 先全局定义process对象
    window.process = {
      env: {
        NODE_ENV: Rails.env === 'production' ? 'production' : 'development'
      }
    };
    
    import 'tippy.js'
    // 后续代码...
    

做完之后重启Rails服务器,刷新页面,tippy.js就能正常识别process.env.NODE_ENV,不会再抛出"process is not defined"的错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:33:19