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
相关产品推荐
相关产品推荐

