如何通过 npm 安装 CloudKit JS 库

Posted

技术标签:

【中文标题】如何通过 npm 安装 CloudKit JS 库【英文标题】:How to install CloudKit JS library via npm 【发布时间】:2017-07-19 13:15:37 【问题描述】:

我目前正在使用 CloudKit JS API 并使用 Node.js 编写脚本。

我通过以下方式安装了苹果here提供的云套件库:

curl "https://cdn.apple-cloudkit.com/ck/2/cloudkit.js" > cloudkit.js

脚本是下一个:

var fetch = require("node-fetch");
var CloudKit = require("./cloudkit.js");

CloudKit.configure(
    services: fetch: fetch,
    containers: [
        containerIdentifier: 'CONTAINER',
        apiToken: 'TOKEN',
        environment: 'development'
    ]
);

var container = CloudKit.getDefaultContainer();
container.setUpAuth();
var publicDB = container.publicCloudDatabase;

function demoPerformQuery() 
    publicDB.performQuery(recordType: 'Schedule').then(function(response)
        console.log(response)
    ).catch(function(error)
        console.log(error)
    )


demoPerformQuery();

运行时的输出是:

(node:30096) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): [CKError
    ckErrorCode: AUTHENTICATION_FAILED
    extensionErrorCode: undefined
    isCKError: true
    isError: true
    isServerError: true
    isServerExtensionError: true
    message: no auth method found
    name: Error
    reason: no auth method found
    recordName: undefined
    redirectURL: undefined
    retryAfter: undefined
    serverErrorCode: AUTHENTICATION_FAILED
    subscriptionID: undefined
    uuid: 63b0ebe0-852a-454b-afc4-5a669e0a307c
    zoneID: undefined
]
 Error: no auth method found
    at Function.value (/home/pi/Web/cloudkit.js:14:1432)
    at /home/pi/Web/cloudkit.js:13:27352
    at process._tickCallback (internal/process/next_tick.js:109:7)
  _ckErrorCode: 'AUTHENTICATION_FAILED',
  _uuid: '63a63eff-a962-4299-afcf-85c1a916f9ea',
  _reason: 'no auth method found',
  _serverErrorCode: 'AUTHENTICATION_FAILED',
  _extensionErrorCode: undefined,
  _retryAfter: undefined,
  _recordName: undefined,
  _subscriptionID: undefined,
  _zoneID: undefined,
  _redirectURL: undefined,
  message: 'no auth method found' 

正如我在*** 中读到的那样,解决方案可能是使用npm 安装它,但作为Node 新手,我被困在npm run-script install-cloudkit-js 的位置,因为我没有那个脚本并且我不知道如何继续。

【问题讨论】:

【参考方案1】:

您的问题似乎与container.setUpAuth(); 的承诺有关

尝试更改您的代码,使其看起来更像这样:

  var fetch = require('node-fetch');

  var CloudKit = require('./cloudkit');

  CloudKit.configure(
      services: fetch: fetch,
      containers: [
         containerIdentifier: 'CONTAINER',
         apiToken: 'TOKEN',
         environment: 'development'
     ]
  );

  var container = CloudKit.getDefaultContainer();
  var database = container.publicCloudDatabase; 

  container.setUpAuth()
    .then(function(userInfo)
      publicDB.performQuery(recordType:'Schedule').then(function(response)
         console.log(response);
    ).catch(function(error)
      console.log(error);
    )    
 )();

【讨论】:

以上是关于如何通过 npm 安装 CloudKit JS 库的主要内容,如果未能解决你的问题,请参考以下文章

使用非模块的 npm 安装库

在 Meteor 1.3 中导入通过 npm 安装的外部 Javascript 库

如何在我的 .js 文件中使用 npm 安装的包? [复制]

在 Laravel 应用程序上使用 npm 安装的 JS/CSS 库

如何通过 https 使用私有 GitLab 存储库作为带有私有令牌的 npm 依赖项

npm 和bower之间的区别