我有一个使用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也正常工作。
答案 0 :(得分:1)
这是svg.js中的已知错误。您可以看到相应的问题here。问题是,svg.js将自己添加到this
。在ECMAscript 262中this
在此上下文中未定义,以防止乱丢窗口对象。在此期间,您可以使用此PR的代码:https://github.com/svgdotjs/svg.js/pull/867