Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Rails 6中使用webpacker使Reduce与crossfilter2一起工作_Webpack_Crossfilter_Reductio - Fatal编程技术网

如何在Rails 6中使用webpacker使Reduce与crossfilter2一起工作

如何在Rails 6中使用webpacker使Reduce与crossfilter2一起工作,webpack,crossfilter,reductio,Webpack,Crossfilter,Reductio,我正在将我的应用程序从Rails 5.2升级到Rails 6.0,并尝试将一些东西迁移到webpacker,包括crossfilter(现在是crossfilter2)和ReduceTio,在花了几个小时之后,我还没有找到解决以下错误的方法 在ReduceTio的value count.js中,顶行是var crossfilter=require('crossfilter2'),并且在代码本身中,它调用crossfilter.bisect.by(函数…)。当我尝试呈现dc图表(在转到webpac

我正在将我的应用程序从Rails 5.2升级到Rails 6.0,并尝试将一些东西迁移到webpacker,包括
crossfilter
(现在是
crossfilter2
)和
ReduceTio
,在花了几个小时之后,我还没有找到解决以下错误的方法

在ReduceTio的
value count.js
中,顶行是
var crossfilter=require('crossfilter2'),并且在代码本身中,它调用
crossfilter.bisect.by(函数…
)。当我尝试呈现
dc
图表(在转到webpack之前工作)时,我的Chrome开发者控制台显示:

Uncaught TypeError: Cannot read property 'by' of undefined at value-count.js:38
这是由
crossfilter.bisect
返回
undefined
引起的。所以我挖了更深一点。在我自己调用
crossfilter
(通过AJAX调用的JS模板)的代码中,
console.log
显示
crossfilter
是一个函数,这是预期的

当我修改
reducetio
value count.js
并在
初始
回调中添加
console.log
语句时,它将
crossfilter
显示为一个模块,带有一个
default
属性,其中包含函数
crossfilter

当我从
value count.js
中删除
var crossfilter=require('crossfilter2');
时,我的应用程序代码再次工作,可能是因为我在
application.js.erb
中定义了
crossfilter
(见下文),它将其作为函数导入。因此,在
reduceTio
代码本身中似乎存在不一致之处,但由于我是webpack新手,我觉得在
import
语句中可能缺少一些内容

问题:如何使
reducetio
在不修改
reducetio
源文件的情况下使用对
crossfilter
的全局引用?
我的环境:

ruby: 2.6.5
Rails: 6.0.2.1
crossfilter2: 1.5.2
reductio: 0.6.3
下面是我的
app/javascript/packs/application.js.erb
中的相关代码(我花了几个小时才弄明白):


如果有人能告诉我我错过了什么,我将不胜感激。

你能回到crossfilter2@1.4?我认为这可能类似于,不是在细节上,而是在作为函数的交叉过滤器和作为模块的交叉过滤器之间的模糊性。具体来说,一些构建系统不喜欢同时也是函数的模块,这是e路交叉过滤器总是被定义的。嗨,谢谢@gordon让我知道这个问题!ReduceTio目前在模块方面的工作方式我并不满意。幸运的是,我们即将合并一个使用ES6模块的拉请求和一个更标准的构建和模块公开方法。它仍然会公开一个全局和消费交叉过滤器全局,但我希望它能更好地与构建系统一起工作。你愿意尝试拉请求,看看它是否对你更有效吗?嗨@Gordon,我尝试降级到crossfilter2@1.4(已安装1.4.8),但问题仍然存在。@Ethan,你的答案行得通!你能回去吗crossfilter2@1.4?我认为这可能类似于,不是在细节上,而是在作为函数的crossfilter和作为模块的crossfilter之间的模糊性。具体地说,一些构建系统不喜欢作为函数的模块,这是crossfilt的方式er总是被定义的。嗨,谢谢@gordon让我知道这个问题!ReduceTio目前在模块方面的工作方式我并不满意。幸运的是,我们即将合并一个使用ES6模块的拉请求和一个更标准的构建和模块公开方法。它仍然会公开一个全局和全局的使用交叉过滤全局,但我希望它在构建系统中更有效。您是否愿意尝试拉取请求,看看这是否对您更有效?嗨@Gordon,我尝试降级到crossfilter2@1.4(它安装了1.4.8),但问题仍然存在。@Ethan,你的答案有效!
import crossfilter from 'crossfilter2';
window.crossfilter = crossfilter;

import reductio from 'reductio';
window.reductio = reductio;