angular-cli를 사용하여 생성 한 제 2 각도 프로젝트에서 제 3 자 typescript 라이브러리 (antlr - https://github.com/tunnelvisionlabs/antlr4ts)를 사용하려고합니다. 이 오류로 인해 실패했습니다. 클래스 생성자 MyLexer를 'new'없이 호출 할 수 없습니다. 아래 코드를 보면 super();를 호출하는 중 실패합니다. 또한 Lexer.js가 antlr 라이브러리의 node_modules에 있습니다.클래스 생성자가 'new'없이 호출 될 수 없습니다.
내 프로젝트에서 babel을 사용하고 있지 않지만이 다른 stackoverflow 게시물은 내 것과 비슷한 오류가 있습니다. Babel error: Class constructor Foo cannot be invoked without 'new'. 그것은 ES6 클래스가 작동하는 방식 때문에, transpiled 클래스로 네이티브 클래스를 확장 할 수 없다고 말합니다. 어떻게 든 내 문제와 관련이 있습니까? 안내해주십시오.
코드
let inputStream = new ANTLRInputStream("sometext");
let lexer = new MyLexer(inputStream); // it fails here
let tokenStream = new CommonTokenStream(lexer);
let parser = new MyParser(tokenStream);
MyLexer.ts (생성 된 코드) Lexer.js
export class MyLexer extends Lexer {
constructor(input: CharStream) {
super(input); // it fails here.
this._interp = new LexerATNSimulator(MyLexer._ATN, this);
}
// more code
}
이 (node_modules에 앉아)
class Lexer extends Recognizer_1.Recognizer {
constructor(input) {
super();
//more code
감사합니다. @Mike Lischke. 문제는 내가 프로젝트에서 어딘가에 ES5에 대한 참조를 가지고 있었다고 생각합니다. 나는 모든 것을 ES6으로 바꾸었고 오류가 사라졌습니다. 나는 antlr4ts가 ES6를 사용하여 변환 되었기 때문에 내 프로젝트에만 ES6을 사용해야하기 때문에 추측합니다. 그게 사실이야? 이제 다른 오류가 발생했습니다. Uncaught ReferenceError : ExpressionContext가 Object.759의 (BQLParser.ts : 136)에 정의되어 있지 않습니다. 어떤 생각? 이 오류는 생성 된 구문 분석기 코드에서 발생합니다. – user911
음, antlr4ts는 주석을 포함하여 최신 ES 기능을 사용하려고합니다. 그렇기 때문에 자신의 코드도 최신 상태로 유지해야합니다 :-) 다른 오류는 별도의 질문을하십시오. 우리는 문법 코드를 봐야합니다. –
고마워요! 별도의 문제를 열었습니다. – user911