首页 > 解决方案 > 如何在云函数中使用 ES6(esm) 导入/导出

问题描述

import functions from 'firebase-functions';
import UtilModuler from '@utilModuler'

exports.helloWorld = functions.https.onRequest((request, response) => {
 response.send("Hello from Firebase!");
});

从“@utilModuler”导入 UtilModuler;^^^^^^^^^

SyntaxError:Module._compile (internal/modules/cjs/loader.js:721:23) 处的意外标识符

注意事项

我正在使用通过导入/导出编写的第三方库(@utilModuler)。可能的解决方法:

  1. Fork 库并使用汇总生成 cjs 文件。
  2. esm就像一个魅力,但它会导致不必要的内存消耗

问题:有没有办法在谷歌云功能中使用混合导入 cjs 和 esm?(除了我上面描述的选项)

在部署功能中使用会很好,比如--experimental-modules

标签: javascriptnode.jsgoogle-cloud-functionses6-modules

解决方案


"devDependencies": {
  "@babel/core": "^7.2.0",
  "@babel/preset-env": "^7.2.0",
  "@babel/register": "^7.0.0"
}

.babelrc

{
  "presets": ["@babel/preset-env"]
}

入口点 node.js 应用程序

require("@babel/register")({})

// Import the rest of our application.
module.exports = require('./index.js')

推荐阅读