【问题标题】:Cloud function fails with "missing ) after argument list at wrapSafe"?云函数在 wrapSafe 的参数列表后因“缺少 ) 而失败?
【发布时间】:2021-03-01 22:23:20
【问题描述】:

我正在将我的云功能拆分为单独的文件,以便延迟加载一些依赖项并减少冷启动。

基本上,我正在尝试从 here 复制 Doug 的答案,但不必为每个函数创建单独的文件。

在我的 index.js 文件中:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.createStripeCustomer = functions.auth.user().onCreate(async (user) => {
  const { createUser } = require('./user/main');
  await createUser(user, admin);
});

在我的 'user/main.js' 文件中:

const functions = require('firebase-functions');
const { Stripe } = require('stripe');
const stripe = new Stripe(functions.config().stripe.secret);
const endpointSecret = functions.config().stripe.singing;

const createStripeCustomer = async (user, admin) => {
  // Do some stuff
};

module.exports = { createUser: createStripeCustomer };

这种拆分背后的意图是,我有一些需要 Stripe 的功能,而另一些不需要,因此我不希望它们都不必要地加载它,但是在参数列表之后出现错误-“缺失” ”。

关于哪里出了问题有什么建议吗?

【问题讨论】:

  • 错误消息应该有一个行号,显示错误发生的位置。
  • 错误消息:"SyntaxError: missing) 在 Module._compile (internal/modules/cjs/loader.js) 的 wrapSafe (internal/modules/cjs/loader.js:915:16) 的参数列表之后:963:27) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) 在 Module.load (internal/modules/cjs/loader.js:863:32) 在 Function .Module._load (internal/modules/cjs/loader.js:708:14) 在 Module.require (internal/modules/cjs/loader.js:887:19) 在 require (internal/modules/cjs/helpers.js :74:18) "
  • 那么请看loader.js的第915行。
  • 您是否知道我在哪里可以找到该文件,因为它是某种内部 Cloud Functions 文件? (我在 Firebase 函数控制台的“日志”部分看到了错误,如果这有什么不同的话)
  • 如果这种情况发生在您未编写的脚本中,它可能需要比您正在运行的版本更新的 node.js。

标签: javascript node.js firebase google-cloud-functions


【解决方案1】:

您的解决方案看起来不像真正的解决方案...

也许你还修复了一些看起来无关紧要的东西......比如额外的双引号。

let something = "A"
console.log("hello", something")

看到变量后多余的双引号了吗?

它会产生与您提到的相同的错误。

这是一个常见的错误,因为代码编辑器只是为你添加东西......如果你像我一样看键盘而不是屏幕,很容易不注意到。

【讨论】:

  • 我一开始也是这么想的,把代码翻了五六遍,还是找不到罪魁祸首。无论如何,现在一切正常。
【解决方案2】:

以防万一有人遇到类似问题,我设法让它工作,只需更改:

const createStripeCustomer = async (user, admin) => {
  // Do some stuff
};

到:

async function createStripeCustomer(user, admin) {
  // Do some stuff
};

我不知道为什么这是个问题,但它似乎解决了我之前遇到的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-02
    • 2013-05-08
    • 2015-09-27
    • 2021-03-11
    • 2021-01-17
    • 2017-09-01
    • 2019-11-09
    相关资源
    最近更新 更多