在我的React项目中,我需要在3个打字稿项目之间共享模型(在我的情况下为打字稿接口)。因此,我选择了bit.env并将所有模型导入https://bit.dev/swyftcart/model/index/~code,一切都很好。
然后,我需要验证模型中的字段,因此我向https://bit.dev/swyftcart/model/index/~code#util.ts添加了实用程序功能,并将其部署到bit.env中>]
当我在项目#2(我保留Firebase云功能的地方)中尝试使用此辅助功能时,我开始遇到以下错误。
/Users/vinoth.gopu/Documents/mine/oss/SwyftCartCloud/functions/node_modules/@bit/swyftcart.model.index/dist/index.js:1 export * from './admin'; ^^^^^^ SyntaxError: Unexpected token 'export' at wrapSafe (internal/modules/cjs/loader.js:1101:16) at Module._compile (internal/modules/cjs/loader.js:1149:27) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1205:10)
我在项目2中的代码
export const placeOrder = functions .runWith({ memory:'256MB' }) .region(cloudConfig.firebase.region) .firestore .document('Orders/{OrderId}') .onCreate((snap, context) => { const orderDetails = snap.data() as UserOrders; try { //check if all fields of interface implemented if(isOrder(orderDetails)) { // PROBLEM HERE //do something }
如以上代码中所指出的,我可以使用该模型项目中的所有接口,但可以使用辅助函数抛出错误消息。
我参考了这些文章和链接
但是它们似乎都不起作用(我还是感到困惑的是,哪个项目需要移植共享模型或我的项目#2?)。我可以理解,这是节点无法识别ES6模块并需要某种中间转换的问题。但是我想知道所有具有类似export
语句的接口都工作得很好。我想了解我在这里想念的是什么。
在我的React项目中,我需要在3个打字稿项目之间共享模型(在我的情况下为打字稿接口)。所以我选择了bit.env并将所有模型导入到https://bit.dev/swyftcart/model / ...
NodeJS默认使用CommonJS方式加载软件包。使用较新版本的NodeJS,您可以使用.mjs
文件或告诉引擎项目为a module-based project来获得JavaScript的模块功能。
我不知道FireBase是否使用最新的Node版本,但这至少应解释您为什么看到此错误。在NodeJS已经开始将内容包装在CommonJS中之后很长一段时间,JS就获得了对Export的支持,这就是为什么要实现这一问题。传统支持几乎总是很痛苦。