我正在尝试运行寓言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
)。
答案 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集成)进入新示例不会导致任何错误。奇怪的是,恕我直言,这只是importDefault
中fable-compiler 0.7.50
的奇怪行为