Bra*_*don 34 firebase google-cloud-functions
看起来Cloud Functions不支持Async-Await表示法.有没有办法我可以使用Babel直到他们做或建议使用promises?
我在Node上的当前函数是这样的:
exports.getToken = async (req, res) => {
//1. Generate token from Braintree
const result = await gateway.clientToken.generate();
//2. Return the client token
res.json(result.clientToken);
};
Run Code Online (Sandbox Code Playgroud)
Dou*_*son 42
Cloud Functions运行node.js的LTS版本,此时根据文档 6.14.0.node 6.x支持EcmaScript 6,它不包含async/await.
但是,您可以使用TypeScript编写代码,并将其转换为ES5/ES6,这将有效地将async/await的使用转换为promises.网络搜索表明,也许这个插件可以用来帮助Babel进行类似的转换.
值得注意的是,Firebase CLI现在允许您使用本机TypeScript支持初始化新的Cloud Functions项目,这是Firebase团队目前向开发人员推荐的内容.
如果您不想使用TypeScript,您现在也可以选择节点8(目前处于测试阶段,并且支持纯JavaScript的async/await)作为部署目标.您可以按照文档编辑package.json,以指示您的函数应该部署到节点8.
l2a*_*lba 33
现在,您可以通过在以下位置添加以下内容来使用Node.js版本8functions/package.json:
"engines": {
"node": "8"
}
Run Code Online (Sandbox Code Playgroud)
示例:https://github.com/firebase/functions-samples/blob/Node-8/authenticated-json-api/functions/package.json
我没有转换TypeScript,而是按照这个非常好的帖子转换了我的javascript 并看看这个存储库
基本上你可以这样做:
npm install -g @babel/cli @babel/core @babel/preset-env
Run Code Online (Sandbox Code Playgroud)
更新:
我遇到了babel版本"7.0.0-beta.51"的麻烦."7.0.0-beta.44"仍然可以.
切换到稳定版本6
npm install --save-dev babel-cli babel-preset-env
在项目文件夹中创建文件.babelrc
{
"presets": [
["@babel/env", {
"targets": {
"node": "6.11.5"
}
}]
]
}
Run Code Online (Sandbox Code Playgroud)
将"functions"文件夹移动到"firebaseFunctions"文件夹,然后运行
babel firebaseFunctions --out-dir functions --copy-files --ignore firebaseFunctions/node_modules
Run Code Online (Sandbox Code Playgroud)
或者为要转换的每个文件运行此命令
babel originalfile.js --out-file transpiledfile.js
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18958 次 |
| 最近记录: |