svg.js不使用Typescript和Stencil.js

时间:2018-02-27 00:06:30

标签: typescript svg.js stenciljs

我有一个使用Typescript构建的基本Stencil应用程序。 我没有使用Angular。 我无法使用svg.js。

这是我的完整组件:

import { Component, State } from '@stencil/core';
import * as moment from 'moment';
import * as SVG from 'svg.js';

@Component({
  tag: 'astro-sandbox',
  styleUrl: 'sandbox.css'
})
export class AstroSandbox {
  componentDidLoad() {
    // console.info(SVG)
    let drawing = SVG('drawing');
  }

  render() {
    return (
      <div>
        <div id="drawing">
        </div>
      </div>
    );
  }
}

此操作因{ Error: Cannot call a namespace ('SVG')...

而失败

我尝试用console.info('SVG')查看SVG并编译但是浏览器给了我错误 TypeError: Cannot set property 'SVG' of undefined

我知道我的应用程序正常工作,我得到了moment.js工作没问题,所以没有TS配置问题。 VS Code中svg.js的Intellisense也正常工作。

1 个答案:

答案 0 :(得分:1)

这是svg.js中的已知错误。您可以看到相应的问题here。问题是,svg.js将自己添加到this。在ECMAscript 262中this在此上下文中未定义,以防止乱丢窗口对象。在此期间,您可以使用此PR的代码:https://github.com/svgdotjs/svg.js/pull/867