寓言D3地图样本

时间:2017-04-26 01:07:42

标签: d3.js f# fable-f#

我正在尝试运行寓言D3 map sample,我发现它需要浏览器server module。 当我尝试

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 'Symbol' not defined

   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>
index.html

中的

现在IE11和最新的Chrome版本都会提升

queue.v1.js:14 Uncaught Error
    at newQueue (queue.v1.js:14)
    at queue (queue.v1.js:109)
    at d3.d_map (d3map.fsx:201)
    at d3map.fsx:201

其中queue.v1.js:14

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

因为concurrency为零...(所有这些都是fable-compiler 0.7.50)。

2 个答案:

答案 0 :(得分:2)

服务器模块只是托管样本的自定义本地服务器。 Fable 1.0 beta与Webpack和Webpack Dev Server集成,因此没有必要。我已经更新了d3示例here,您能试一试吗?新示例还包括transform-runtime Babel插件,该插件会自动在您的包中插入必要的polyfill(如Symbol),因此您不必担心core.js依赖项:)

答案 1 :(得分:1)

我通过定义(line 33

解决了我的编辑(queue.v1.js:14 Uncaught Error)中的错误(fable-compiler 0.7.50
let queue = importDefault<int->obj> "queue"

使用int代替unit,然后调用

queue(2)  

line 201而不是空的c.tor queue()

替代,更优雅的解决方案

根据与Alfonso Garcia-Caro的答案相关联的新d3样本的line 33,我们可以用

替换队列定义
let queue() = importDefault "queue"

然后使用简单的queue() c.tor ,不用 arg

次要说明

请注意,使用

恢复旧行
let queue = importDefault<unit->obj> "queue"

使用Fable 1.0(与Webpack Dev Server集成)进入新示例不会导致任何错误。奇怪的是,恕我直言,这只是importDefaultfable-compiler 0.7.50的奇怪行为