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

Rails 8使用Importmap无Bundler时引入tippy.js报"Uncaught ReferenceError: process is not defined"的解决方法求助

Rails 8使用Importmap无Bundler时引入tippy.js报"Uncaught ReferenceError: process is not defined"的解决方法求助

大家好,我最近把应用升级到了Rails 8,改用Propshaft和importmap-rails gem替代之前的Webpacker。目前我还是用Yarn管理依赖,并且在Importmap里固定依赖版本,整体运行都挺顺畅的,唯独在引入tippy.js的时候遇到了问题。

我已经成功固定并导入了tippy.js及其所有依赖(依赖项还挺多的,但导入本身是成功的),不过浏览器却抛出了这个错误:

Uncaught ReferenceError: process is not defined
    at validation.ts:46:1

我推测这是因为tippy.js原本依赖Webpack这类打包工具来剔除process.env相关的日志代码,但Importmap并没有这个处理环节。

我的配置代码如下:

config/importmap.rb

pin "tippy", to: "tippy.js/dist/tippy.esm.js"

# 各种依赖的固定配置...
pin "/assets/@popperjs/core/dist/esm/dom-utils/isLayoutViewport.js", to: "@popperjs/core/dist/esm/dom-utils/isLayoutViewport.js"
pin "/assets/@popperjs/core/dist/esm/dom-utils/getWindowScroll.js", to: "@popperjs/core/dist/esm/dom-utils/getWindowScroll.js"
pin "/assets/@popperjs/core/dist/esm/dom-utils/getHTMLElementScroll.js", to: "@popperjs/core/dist/esm/dom-utils/getHTMLElementScroll.js"

application.js

import tippy from 'tippy';

报错对应的tippy.js代码行是:

if (__DEV__) {

我在tippy.js的仓库里找到了相关的问题记录,里面推荐用polyfill来解决,但我尝试后没成功。我试过的方法有:

  • 在application.js里添加全局变量:
    window.process = { env: { NODE_ENV: 'development' }}
    
    但还是出现同样的错误;
  • 在bash profile里设置NODE_ENV环境变量,然后重启Rails服务器,也没有效果。

有没有朋友遇到过类似的问题,或者知道怎么解决这个问题呢?

备注:内容来源于stack exchange,提问作者dthegnome

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:48:01