Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Typescript中使用Edge.js调用API_Javascript_Angular_Typescript_Api_Edge.js - Fatal编程技术网

Javascript 在Typescript中使用Edge.js调用API

Javascript 在Typescript中使用Edge.js调用API,javascript,angular,typescript,api,edge.js,Javascript,Angular,Typescript,Api,Edge.js,这是我第一次使用Angular、Edge.js或调用API。我不确定我是否做得对,但我肯定做得不对,因为它不起作用 为了从用C#编写的API中获取数据,我在Angular项目的服务中使用了Edge.js data.service.ts: import { Injectable, ValueProvider } from '@angular/core'; import * as edge from "edge"; @Injectable({ providedIn: 'root' }) exp

这是我第一次使用Angular、Edge.js或调用API。我不确定我是否做得对,但我肯定做得不对,因为它不起作用

为了从用C#编写的API中获取数据,我在Angular项目的服务中使用了Edge.js

data.service.ts:

import { Injectable, ValueProvider } from '@angular/core';
import * as edge from "edge";

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

  constructor() { }

  getData(type: string, method: string) {
    let data = edge.func({
      assemblyFile: 'C:\Program Files\Common Files\Siemens\Automation\Simatic OAM\bin\CC.CommonInterfaces.dll',
      typeName: `CC.CommonInterfaces.${type}`,
      methodName: `${method}`
    });

    return data(null, function(error, result) {
      if (error) throw error;
      console.log(result);
      return result;
    });
  }

}
然后,我只需在组件中使用正确的参数调用getData方法,如下所示:

onClickTestAPI() {
  this.dataSrv.getData("IState", "IsTunnelActive");
}
但在运行web服务器时,控制台输出显示:

core.js:4002 ERROR Error: Uncaught (in promise): Error: Unexpected token '<'
  Evaluating https://localhost:8888/edge
  Loading ccui/ccui.umd.js
SyntaxError: Unexpected token '<'
    at eval (<anonymous>)
    at Qe (system.js:4)
    at system.js:4
    at T (system.js:4)
    at T.h (system.js:4)
    at T (system.js:4)
    at system.js:4
    at system.js:4
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:391)
    at Object.onInvoke (core.js:26255)
    at resolvePromise (zone.js:852)
    at zone.js:762
    at rejected (tslib.es6.js:69)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:391)
    at Object.onInvoke (core.js:26255)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:390)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:150)
    at zone.js:910
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:423)
    at Object.onInvokeTask (core.js:26246)

core.js:4002错误:未捕获(承诺中):错误:意外标记“这通常意味着您试图解析响应正文,就像它是JSON一样,但它是HTML或XML。@jonrsharpe我在哪里可以定义如何解析响应?我需要将解析更改为HTML还是需要将响应更改为JSON来解决这个问题?我没有使用edge,所以我不能告诉您。我也不知道您是否期望使用JSON,并且在这两者之间存在代理问题,或者解析实际上是错误的。@slebetman是的,我正在服务器上渲染它。我有客户端和服务器端。但是,边缘包含在客户端中。我是否需要将其添加到服务器端?如果需要,它们如何通信?边缘不能包含在客户端中。这行不通。浏览器与某物进行通信的方式有限,几乎所有的方式都是基于HTTP的:加载脚本、img、样式等标记(这是JSONP的基础)、ajax(XMLHttpRequest、fetch等)、加载iFrame、通过插件进行通信(例如Java、Flash、Silverlight等——但请注意Safari和Chrome不再支持这一点——大约80%的web用户不再使用插件)和WebSocket。浏览器无法直接加载dll——这将是一种安全风险