TencentCloudBase / cloudbase-manager-node

The node cloudbase manager tool
ISC License
18 stars 5 forks source link

云函数中执行报错 #12

Closed GiantappMan closed 3 years ago

GiantappMan commented 3 years ago

同样的代码,本地调试不会报错。上传到云函数就报错

    const CloudBase = require('@cloudbase/manager-node')
    const _app = new CloudBase({
        env: 'xxxx',//process.env.DB_ENV_ID,
        secretId: process.env.DB_SECRET_ID,
        secretKey: process.env.DB_SECRET_KEY,
    });

    let r = await _app.database.createCollectionIfNotExists('name');

报错

{ CloudBaseError: Environment  not found

    at envConfig.getEnvInfo.then.envInfo (/var/user/node_modules/crawler_common/node_modules/@cloudbase/manager-node/lib/environment.js:39:27)

    at process._tickCallback (internal/process/next_tick.js:68:7)

  name: 'CloudBaseError',

  message: 'Environment  not found',

  original: null,

  code: '',

  requestId: '',

  action: '' }
Mrjing commented 3 years ago

这个环境变量 process.env.DB_ENV_ID ,是不是你自己本地注入了

GiantappMan commented 3 years ago

我写死字符串,也是一样的错误

GiantappMan commented 3 years ago

我打印了process.env.DB_ENV_ID,是有值的

Mrjing commented 3 years ago

const app = new CloudBase({ secretId: 'Your SecretId', secretKey: 'Your SecretKey', envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取 })

这里初始化的时候env的指定是envId,这里和node-sdk有些区别,这里我们之后做下字段的兼容

GiantappMan commented 3 years ago

改成envId后,任然报错

{ CloudBaseError: Environment mscoder-1dcc93 not found

    at envConfig.getEnvInfo.then.envInfo (/var/user/node_modules/crawler_common/node_modules/@cloudbase/manager-node/lib/environment.js:39:27)

    at process._tickCallback (internal/process/next_tick.js:68:7)

  name: 'CloudBaseError',

  message: 'Environment mscoder-1dcc93 not found',

  original: null,

  code: '',

  requestId: '',

  action: '' }
GiantappMan commented 3 years ago

而且这个错误的命名在本机可以跑。

之前提过类似的问题...... https://github.com/TencentCloudBase/tcb-admin-node/issues/11

GiantappMan commented 3 years ago

image 环境是有的

GiantappMan commented 3 years ago

有个特点就是,我同使使用了tcb和 manager sdk,不知道会不会有影响

const tcb = require('@cloudbase/node-sdk');
const app = tcb.init({
    env: process.env.DB_ENV_ID,
    secretId: process.env.DB_SECRET_ID,
    secretKey: process.env.DB_SECRET_KEY,
});
const db = app.database();

 //主要拿来创建表
    const CloudBase = require('@cloudbase/manager-node')
    const _app = new CloudBase({
        envId: process.env.DB_ENV_ID,//'mscoder-1dcc93',
        secretId: process.env.DB_SECRET_ID,
        secretKey: process.env.DB_SECRET_KEY,
    });
Mrjing commented 3 years ago

同时使用应该是不会有影响的,这里会不会是使用的envid 不是当前 这个账号的呢

GiantappMan commented 3 years ago

我用tcb读写数据,manager-node建表。都是从一个配置文件读出来的。现在的现象是不能建表,我手动建立集合可以正常写入数据。

确认了是一个账户。 环境: 传统云函数,调用tcb数据库

const tcb = require('@cloudbase/node-sdk');
const app = tcb.init({
    env: process.env.DB_ENV_ID,
    secretId: process.env.DB_SECRET_ID,
    secretKey: process.env.DB_SECRET_KEY,
});
    const CloudBase = require('@cloudbase/manager-node')
    const _app = new CloudBase({
        envId: process.env.DB_ENV_ID,//'mscoder-1dcc93',
        secretId: process.env.DB_SECRET_ID,
        secretKey: process.env.DB_SECRET_KEY,
    });

错误信息

CloudBaseError: Environment mscoder-1dcc93 not found

    at /var/user/node_modules/crawler_common/node_modules/@cloudbase/manager-node/lib/environment.js:39:27

    at processTicksAndRejections (internal/process/task_queues.js:97:5)

    at async DatabaseService.descriptor.value (/var/user/node_modules/crawler_common/node_modules/@cloudbase/manager-node/lib/database/index.js:23:17)

    at async DatabaseService.createCollectionIfNotExists (/var/user/node_modules/crawler_common/node_modules/@cloudbase/manager-node/lib/database/index.js:132:19)

    at async Object.exports.init (/var/user/node_modules/crawler_common/db.js:30:21)

    at async Object.exports.start (/var/user/crawler_stackoverflow_flutter.js:117:5)

    at async Runtime.exports.main_handler [as handler] (/var/user/index.js:8:5) {

  name: 'CloudBaseError',

  message: 'Environment mscoder-1dcc93 not found',

  original: null,

  code: '',

  requestId: '',

  action: ''

}
Mrjing commented 3 years ago

可以提供下你的这个腾讯云账户的uin信息么,我查下后台日志

Mrjing commented 3 years ago

方便加微信沟通吗,有些问题可以详细沟通下,我的微信号是kk33883386

GiantappMan commented 3 years ago

添加区域后正常了

    const _app = new CloudBase({
        envId: process.env.DB_ENV_ID,//'mscoder-1dcc93',
        secretId: process.env.DB_SECRET_ID,
        secretKey: process.env.DB_SECRET_KEY,
        region: "ap-shanghai"
    });