首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QZ在角度安装和找不到websocket时出现错误

QZ在角度安装和找不到websocket时出现错误
EN

Stack Overflow用户
提问于 2019-07-16 09:13:42
回答 1查看 268关注 0票数 1

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

代码语言:javascript
复制
unresolved variable websocket

在23号线上

代码语言:javascript
复制
unresolved variable api

在第16行。

有人能告诉我怎么解决这个问题吗?有没有更好的方法通过angular打印到这个或另一个收据打印机?

代码语言:javascript
复制
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);
    }
  };
}
EN

回答 1

Stack Overflow用户

发布于 2020-01-16 02:03:02

无法解析的变量websocket

未解析的变量api

这两个都是qz-tray.js没有正确加载的标志。

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

下面是在Angular中运行QZ托盘的一个工作示例:https://stackblitz.com/edit/angular-3h4cnv

尽管您可以安全地将其转换为QZ Tray angular quickstart guide.

  • The,但您可以安全地将其转换为import { default as qz } from "qz-tray";

  • 导入行似乎是正确的,并且与import { default as qz } from "qz-tray"

import * as qz的导入行匹配应该为valid according to TypeScript guidelines on exporting the default export of a module

作为故障排除步骤,您可以调用:

代码语言:javascript
复制
console.log(qz);

  • 如果加载正确,它应该显示如下内容:

另一种故障排除技术是使用您首选的包管理器npm uninstall qz-tray; npm install qz-tray等删除并重新安装qz-tray

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57048891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档