Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
D3.js 寓言D3地图样本_D3.js_F#_Fable F# - Fatal编程技术网

D3.js 寓言D3地图样本

D3.js 寓言D3地图样本,d3.js,f#,fable-f#,D3.js,F#,Fable F#,我正在尝试运行一个寓言,我发现它需要一个浏览器。 当我试图 npm run build 在d3文件夹下进行编译 npm run build > @ build C:\...\d3 > node ../node_modules/fable-compiler fable-compiler 0.7.50: Start compilation... Compiled fable-import-d3\Fable.Import.D3.js at 03:00:47 Compiled d3\d

我正在尝试运行一个寓言,我发现它需要一个浏览器。 当我试图

npm run build
在d3文件夹下进行编译

npm run build

> @ build C:\...\d3
> node ../node_modules/fable-compiler

fable-compiler 0.7.50: Start compilation...
Compiled fable-import-d3\Fable.Import.D3.js at 03:00:47
Compiled d3\d3map.js at 03:00:48
Bundling...
Bundled out\bundle.js at 03:00:48
但之后

npm start
浏览器位于
http://localhost:8080/
获取未捕获错误,
SCRIPT5009
未定义“符号”:

   if (typeof globalObj.__FABLE_CORE__ === "undefined") {
    globalObj.__FABLE_CORE__ = {
        types: new Map(),
        symbols: {
            reflection: Symbol("reflection"),
        }
    };
编辑

上述问题只与IE11有关(与Chrome无关),通过添加

  <script src="node_modules/core-js/client/core.js"></script>
其中
queue.v1.js:14

function newQueue(concurrency) {
  if (!(concurrency >= 1)) throw new Error;

因为
并发性
为零。。。(所有这些都是指寓言编译器0.7.50

服务器模块只是一个用于承载示例的自定义本地服务器。与Webpack和Webpack Dev服务器集成,因此不需要这样做。我已经更新了d3样品,你能试一试吗?新的示例还包括Babel插件,它可以自动在包中插入必要的多边形填充(如符号),这样您就不必担心core.js依赖性:)

我已经通过定义()

而不是空的c.tor
queue()

另一种更优雅的解决方案 根据链接到阿方索·加西亚·卡罗答案的新d3样本,我们可以将队列定义替换为

let queue() = importDefault "queue"
然后使用不带arg的简单
queue()

小音符

请注意,使用

let queue = importDefault<unit->obj> "queue"
let queue=importDefaultobj>“队列”

使用Fable 1.0(与Webpack开发服务器集成)导入新示例不会导致任何错误。奇怪的是,
fable compiler 0.7.50

中的
importDefault
只是一个奇怪的行为,我认为
Symbol
没有定义错误基本上意味着你需要添加对polyfill的引用,比如core.js:每天处理这些变化的最佳方式(这是js世界),但是添加对corejs的引用对我来说很有效:)@TomasPetricek是否也意味着——或者——在客户端或npm服务器端可能会有一个浏览器版本需要更新?还是只需添加我错过的参考资料?纯JS中的原始版本运行良好:Fable端口处理不是需要如此频繁的更新吗?Fable版本()引用了
core.JS
。我相信在Fable编译期间也可以将其内联,但我不确定如何做到这一点。对不起,我还没有将回购示例更新到Fable 1.0 beta版。我只是为分行的d3map样本做的。你能试试吗?自述文件中有说明。@AlfonsoGarcia Caro谢谢!今晚晚些时候肯定可以。我自己写了一个答案来概括吉特的回答,但我更乐意接受你们其中一位的回答:-)再次感谢你们!出于好奇,1)是否有意义,是否仍有可能运行版本0.7修复上述错误,而不升级到新的beta版1.0?2) 尽管它被移植到了.fsx,但它严重依赖于JavaScript和D3库:利用更多F#的可能性在哪里?2之二)Visual Studio代码不理解某些D3行的语法是否正常?哪一个是合适的编辑器/IDE?1)我想是的,在这种情况下,我只需要在加载寓言代码之前,在您的网页中的脚本标记中核心js,正如Tomas在上面所评论的那样。2) 对于其他库(如React),已经创建了一个中间层,以便能够使交互在F#中更为惯用,但这当然需要维护工作。有很多LIB可以“简化”D3,我会选择一个,如果需要的话,为它创建中间层。3) 我认为VS代码/Ionide有时在使用点3次访问成员后不会自动完成。任何IDE都可以,但并非所有IDE都支持新的项目格式。“正如Tomas在上面评论的那样,在加载寓言代码之前,我只想在您的网页中的脚本标记中核心js。”很抱歉造成了很多混乱!好吧,托马斯是对的,
Symbol undefined
已经解决了,事实上我的问题不同了,我已经把它发布了
newQueue(queue.v1.js:14)处的未捕获错误
if(!(concurrency>=1))抛出新错误和并发性为0。。。我知道你的解决方案是完美的,但我的要求只是为了理解和修复旧版本的错误。。。
queue(2)  
let queue() = importDefault "queue"
let queue = importDefault<unit->obj> "queue"