Service QZ在角度安装和未找到websocket时出现错误

Service QZ在角度安装和未找到websocket时出现错误,service,angular6,network-printers,qz-tray,Service,Angular6,Network Printers,Qz Tray,我正试图让我的angular webapp与star sp 700收据打印机一起工作,并正试图将qz托盘集成到我的软件中。我在尝试安装下面显示的@types/qz托盘时出错。我也犯了一个错误 unresolved variable websocket 在23号线和 unresolved variable api 第16行 有人能告诉我如何解决这个问题吗?如果有更好的方法通过angular打印机打印到这台或另一台收据打印机上 import { Injectable } from '@angul

我正试图让我的angular webapp与star sp 700收据打印机一起工作,并正试图将qz托盘集成到我的软件中。我在尝试安装下面显示的@types/qz托盘时出错。我也犯了一个错误

unresolved variable websocket
在23号线和

unresolved variable api
第16行

有人能告诉我如何解决这个问题吗?如果有更好的方法通过angular打印机打印到这台或另一台收据打印机上

import { Injectable } from '@angular/core';
import { from as fromPromise, Observable, throwError } from 'rxjs';
import { HttpErrorResponse } from '@angular/common/http';
import { catchError, map } from 'rxjs/operators';

import * as qz from 'qz-tray';
import { sha256 } from 'js-sha256';

@Injectable({
  providedIn: 'root'
})
export class PrinterService {

  //npm install qz-tray js-sha256 rsvp --save
  constructor() {
    qz.api.setSha256Type(data => sha256(data));
    qz.api.setPromiseType(resolver => new Promise(resolver));
  }
  // Get the list of printers connected
  getPrinters(): Observable<string[]> {
    console.log('+++++++++PrinterService+++++');
    return fromPromise(
      qz.websocket.connect().then(() => qz.printers.find())
    )
    map((printers: string[]) => printers)
      , catchError(this.errorHandler);
  }

  // Get the SPECIFIC connected printer
  getPrinter(printerName: string): Observable<string> {
    return fromPromise(
      qz.websocket.connect()
        .then(() => qz.printers.find(printerName))
    )
    map((printer: string) => printer)
      , catchError(this.errorHandler);
  }

  // Print data to chosen printer
  printData(printer: string, data: any): Observable<any> {
    const config = qz.configs.create(printer);

    return fromPromise(qz.print(config, data))
    map((anything: any) => anything)
      , catchError(this.errorHandler);
  }

  private errorHandler(error: HttpErrorResponse) {
    if (error.error instanceof ErrorEvent) {
      console.log(error.error);
      console.log('An error occurred:', error.status);
      return throwError(error.error);
    } else {
      console.log('An error occurred:', error.status);
      console.log(error.error);
      return throwError(error.error);
    }
  };
}
从'@angular/core'导入{Injectable};
从“rxjs”导入{from as-fromPromise,Observable,throwerr};
从“@angular/common/http”导入{HttpErrorResponse};
从“rxjs/operators”导入{catchError,map};
从“qz托盘”导入*作为qz;
从“js-sha256”导入{sha256};
@注射的({
providedIn:'根'
})
导出类PrinterService{
//npm安装qz托盘js-sha256 rsvp--保存
构造函数(){
qz.api.setSha256Type(数据=>sha256(数据));
setPromiseType(解析器=>newpromise(解析器));
}
//获取已连接的打印机列表
getPrinters():可观察{
console.log('+PrinterService'+;
还债(
然后(()=>qz.printers.find())
)
映射((打印机:字符串[])=>打印机)
,catchError(this.errorHandler);
}
//获取特定的已连接打印机
getPrinter(printerName:string):可观察{
还债(
qz.websocket.connect()
.then(()=>qz.printers.find(printerName))
)
映射((打印机:字符串)=>打印机)
,catchError(this.errorHandler);
}
//将数据打印到所选打印机
printData(打印机:字符串,数据:任意):可观察{
const config=qz.configs.create(打印机);
从Promise返回(qz.print(配置,数据))
地图((任意:任意)=>任意)
,catchError(this.errorHandler);
}
私有errorHandler(错误:HttpErrorResponse){
if(error.error instanceof ErrorEvent){
console.log(error.error);
console.log('发生错误:',error.status);
返回投掷器(error.error);
}否则{
console.log('发生错误:',error.status);
console.log(error.error);
返回投掷器(error.error);
}
};
}
未解析变量
websocket

未解析变量
api

这两种迹象都表明
qz-tray.js
没有正确加载

对象
qz.api
qz.websocket
都是
qz
命名空间的一部分。如果它们不可用,则
qz
从未正确导入

以下是QZ托盘以角度运行的工作示例:

  • 导入行似乎是正确的,并且与的相匹配
  • import*as qz
    应该是,但是您可以安全地将其从“qz托盘”转换为
    import{default as qz}
    
作为故障排除步骤,您可以调用:

console.log(qz);
  • 如果加载正确,它应该显示如下内容:
另一种故障排除技术是使用您首选的软件包管理器卸下并重新安装
qz托盘
npm卸载qz托盘;npm安装qz托盘

未解析变量
websocket

未解析变量
api

这两种迹象都表明
qz-tray.js
没有正确加载

对象
qz.api
qz.websocket
都是
qz
命名空间的一部分。如果它们不可用,则
qz
从未正确导入

以下是QZ托盘以角度运行的工作示例:

  • 导入行似乎是正确的,并且与的相匹配
  • import*as qz
    应该是,但是您可以安全地将其从“qz托盘”转换为
    import{default as qz}
    
作为故障排除步骤,您可以调用:

console.log(qz);
  • 如果加载正确,它应该显示如下内容:
另一种故障排除技术是使用您首选的软件包管理器卸下并重新安装
qz托盘
npm卸载qz托盘;npm安装qz托盘