yandex-cloud/serverless-plugin

Channel credentials must be a ChannelCredentials object

scorp1k opened this issue · 9 comments

Error:
Error: TypeError: Channel credentials must be a ChannelCredentials object at new ChannelImplementation (E:\Development\Intrading\backend\graphql\node_modules\@grpc\grpc-js\build\src\channel.js:81:19) at createChannel (E:\Development\Intrading\backend\graphql\node_modules\nice-grpc\lib\client\channel.js:20:12) at Session.client (E:\Development\Intrading\backend\graphql\node_modules\@yandex-cloud\nodejs-sdk\dist\session.js:65:55) at new YandexCloudProvider (E:\Development\Intrading\backend\graphql\node_modules\@yandex-cloud\serverless-plugin\dist\provider\provider.js:71:38) at PluginManager.addPlugin (E:\Development\Intrading\backend\graphql\node_modules\serverless\lib\classes\plugin-manager.js:91:28) at new YandexCloudServerlessPlugin (E:\Development\Intrading\backend\graphql\node_modules\@yandex-cloud\serverless-plugin\dist\index.js:14:39) at PluginManager.addPlugin (E:\Development\Intrading\backend\graphql\node_modules\serverless\lib\classes\plugin-manager.js:91:28) at E:\Development\Intrading\backend\graphql\node_modules\serverless\lib\classes\plugin-manager.js:137:69 at Array.forEach (<anonymous>) at PluginManager.loadAllPlugins (E:\Development\Intrading\backend\graphql\node_modules\serverless\lib\classes\plugin-manager.js:137:44) at async Serverless.init (E:\Development\Intrading\backend\graphql\node_modules\serverless\lib\serverless.js:141:5) at async E:\Development\Intrading\backend\graphql\node_modules\serverless\scripts\serverless.js:591:7

serverless.yml

service: graphql
frameworkVersion: "3"
provider:
  name: yandex-cloud
  runtime: nodejs16
  environment:
    YC_IAM_TOKEN: 
    YC_CLOUD_ID: 
    YC_FOLDER_ID: 
plugins:
  - "@yandex-cloud/serverless-plugin"
  - serverless-offline
package:
  patterns:
    - dist/**
    - package.json
functions:
  graphql:
    handler: dist/index.handler
    memorySize: 128
    timeout: 5
    account: 
    events:
      - http:
          path: graphql
          method: post
          cors: true
      - http:
          path: graphql
          method: get
          cors: true

package.json:

"dependencies": {
    "apollo-server-core": "^3.7.0",
    "apollo-server-lambda": "^3.7.0",
    "graphql": "^16.5.0",
    "knex": "^2.0.0",
    "mssql": "^8.1.0",
    "ydb-sdk": "^3.0.0"
  },
  "devDependencies": {
    "@types/node": "^17.0.32",
    "@yandex-cloud/serverless-plugin": "^1.0.2",
    "nodemon": "^2.0.16",
    "serverless": "^3.17.0",
    "serverless-offline": "^8.5.0",
    "typescript": "^4.6.4"
  }

Try to update ydb-sdk dependency to the latest version 3.1.0. It uses the latest version of the yandex-cloud SDK. Let me know if it solves the problem.

"dependencies": {
    "apollo-server-core": "^3.7.0",
    "apollo-server-lambda": "^3.7.0",
    "graphql": "^16.5.0",
    "knex": "^2.0.0",
    "mssql": "^8.1.0",
    "ydb-sdk": "^3.1.0"
  },
  "devDependencies": {
    "@types/node": "^17.0.32",
    "@yandex-cloud/serverless-plugin": "^1.0.2",
    "nodemon": "^2.0.16",
    "serverless": "^3.17.0",
    "serverless-offline": "^8.5.0",
    "typescript": "^4.6.4"
  }

The error is still exist.

Could you provide an example code to replicate the error?

@scorp1k а еще можно вывод npm ls @yandex-cloud/nodejs-sdk и node -v && npm -v?

npm ls @yandex-cloud/nodejs-sdk

+-- @yandex-cloud/serverless-plugin@1.0.2
| `-- @yandex-cloud/nodejs-sdk@2.1.0
`-- ydb-sdk@3.1.0
  `-- @yandex-cloud/nodejs-sdk@2.1.0 deduped
v16.13.2
8.1.2

Some changes in serverless.yml (but error exist):

service: graphql
frameworkVersion: "3"
provider:
  name: yandex-cloud
  runtime: ${file(./config.${opt:stage}.json):runtime}
  environment:
    YC_OAUTH_TOKEN: ""
    YC_CLOUD_ID: ""
    YC_FOLDER_ID: ""
    YDB_ENDPOINT: ""
    YDB_DATABASE: ""
plugins: ${file(./config.${opt:stage}.json):plugins}
package:
  patterns:
    - dist/**
    - package.json
functions:
  graphql:
    handler: dist/index.handler
    memorySize: 128
    timeout: 5
    account: admin
    events:
      - http:
          path: graphql
          method: any
          cors: true

The error is solved by deleting package-lock.json and installing all packages from scratch.

The error is solved by deleting package-lock.json and installing all packages from scratch.

Awesome! Sounds like p-l.json was previously generated by older version of npm.