为啥 export const helloWorld 在 firebase deploy 中出现错误而 export.helloWorld 没有?
Posted
技术标签:
【中文标题】为啥 export const helloWorld 在 firebase deploy 中出现错误而 export.helloWorld 没有?【英文标题】:Why export const helloWorld gives an error in firebase deploy and exports.helloWorld does not?为什么 export const helloWorld 在 firebase deploy 中出现错误而 export.helloWorld 没有? 【发布时间】:2020-07-12 21:06:59 【问题描述】:在一个使用 Expo 的 React Native 项目中,我尝试使用 export
部署以下云功能:
注意:我在 index.js
中使用 javascript。
export const helloWorld = functions.https.onRequest((request, response) =>
response.send("Hello from Firebase!");
);
但是我收到了这个错误:
Error: Error occurred while parsing your function triggers.
/Users.../functions/index.js:5
export const helloWorld = functions.https.onRequest((request, response) =>
^^^^^^
SyntaxError: Unexpected token export
at new Script (vm.js:80:7)
at createScript (vm.js:274:10)
at Object.runInThisContext (vm.js:326:10)
at Module._compile (internal/modules/cjs/loader.js:664:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
然后我使用了exports.helloWorld...
,效果很好!
exports.helloWorld = functions.https.onRequest((request, response) =>
response.send("Hello from Firebase!");
);
谁能解释为什么会这样?
谢谢
【问题讨论】:
***.com/questions/38296667/… 嘿@DougStevenson 感谢您的回复。如我所见:“NodeJS 使用 CommonJS 模块语法(module.exports)而不是 ES6 模块语法(export 关键字)”。 但是为什么它在您的教程中与 TypeScript 一起使用?将代码编译成 lib 文件夹中的 Javascript 时,代码是否会在 commonjs 中与 babel 一起转译? TypeScript 总是被转译的,你必须选择它使用的模块系统。 Firebase 在创建项目时会在 tsconfig.json 中为您选择正确的一个。您可以通过查看 lib 下的 javascript 代码来查看它生成的内容。 【参考方案1】:改成:
const helloWorld = functions.https.onRequest((request, response) =>
response.send("Hello from Firebase!");
);
module.exports = helloWorld
直接出口使出口成为出口之一。即:通过exports.something引用
Module.exports 在引用的地方直接指定导出。
【讨论】:
嘿@Nilanka 感谢您的回答。我会听从你的建议! 其实我在使用module.exports = ...
的时候在部署函数时遇到了问题。请检查我的评论here以上是关于为啥 export const helloWorld 在 firebase deploy 中出现错误而 export.helloWorld 没有?的主要内容,如果未能解决你的问题,请参考以下文章
export default与export const的区别
export default与export const的区别
ES6中表达export default const是无效的