如何使用@ c8y / client库

时间:2018-06-26 22:10:01

标签: cumulocity

我正在测试新的@ c8y / client库的打字稿。

我有一个非常简单的代码:

import {
  Client
} from '@c8y/client';
//const baseUrl = 'https://bismark1.cumulocity.com/';
const baseUrl = 'https://demos.cumulocity.com/';
const tenant = 'bismark1';
const user = '...';
const password = '.....';


(async() => {
  console.log('authentication to c8y server')
  const client = await Client.authenticate({
    user,
    password,
    tenant
  }, baseUrl);

  console.log('result from authetication', client)
  const {
    data,
    paging
  } = await client.inventory.list();
  console.log('result from inventory ', data)

  // data = first page of inventory
  const nextPage = await paging.next();
  // nextPage.data = second page of inventory

  const managedObjId: number = 1;

  (async() => {
    const {
      data,
      res
    } = await client.inventory.detail(managedObjId);
    console.log(data)
  })();

})();

当我运行从.ts文件编译的.js时,我得到以下响应:

authentication to c8y server

然后执行停止。

console.log('result from authetication', client)

从不被调用。似乎在身份验证过程中失败,并且未显示错误。

我做错了什么?

谢谢。

1 个答案:

答案 0 :(得分:2)

第一个问题可能是CORS。如果要从其他域请求,则需要启用它。 Here is a guide如何在累积量中做到这一点:

  

在“访问控制”下,管理员可以启用跨域   资源共享或Cumulocity API上的“ CORS”。

第二个问题可能是您从本地开发服务器运行它。我主要使用此http-server from npm快速测试脚本。您可以通过以下方式使用它:

$ npm install http-server -g
$ http-server

如果这一切都无法帮助您,则可以尝试捕获客户端以查看其引发的错误:

try {
  const client = await Client.authenticate({
    user,
    password,
    tenant
  }, baseUrl);
} catch(ex) {
 console.log(ex);
}

该示例可能会告诉您更多有关您的代码有什么问题或客户端中是否存在错误的信息。