Firebase firestore 函数部署因意外标记“.”而失败。可选链
Firebase firestore function deploy failed due to unexpected token "." optional chaining
我正在尝试使用包含可选链接的代码部署 node.js 触发器和函数。我以前部署此代码没有错误,但现在遇到此错误:
return this.roles?.includes(role.toString()) ? true : false;
^
SyntaxError: Unexpected token '.'
at wrapSafe (internal/modules/cjs/loader.js:915:16)
at Module._compile (internal/modules/cjs/loader.js:963:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (/workspace/diwimaModelWeb/lib/network/index.js:13:14)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
我使用 typescript,tsconfig.ts 中配置的构建目标是“es2020”。我可以检查代码并用 null cheking 替换所有可选链接,但我宁愿不这样做,因为我之前部署它没有问题。
对于遇到此问题的任何人。我在自己写这个问题的过程中修复了它,我注意到我使用不同的节点和 npm verisons 来构建和上传,nvm 就像那样棘手:D。我还在 tsconfig 中选择了“es2017”。不是 100% 确定是什么修复了它。
我遇到了同样的问题,确实是节点版本不匹配。
(虽然不是 npm,但那不重要)。
解决步骤:
检查您的本地节点版本:nvm --version
(如果您从他们的网站手动安装,我建议现在开始 use nvm :)
确保在 package.json
中设置相同
例如"engines": {"node": "14"},
根据需要在 tsconfig.json
中设置您的 ES 版本。
例如"target": "ES2020",
它应该与您的节点版本兼容。
ES versions' feature highlights here and the list of node versions supported by firebase here.
列表
可选,如果您仍有问题:
确保到目前为止提到的所有内容都在您的 firebase 应用程序的 functions
文件夹中(例如,您没有意外地在根文件夹中安装依赖项)。
如果需要,检查并更新 firebase 工具和 firebase 包。例如npm install --save firebase-functions
删除 package-lock.json
然后再次构建 + 部署(npm run lint && tsc
和 firebase deploy --only functions
)。有可能你的一些依赖安装搞砸了,例如你没有 --save 它们(至少我在上一步尝试解决最初的问题时这样做了)。
我正在尝试使用包含可选链接的代码部署 node.js 触发器和函数。我以前部署此代码没有错误,但现在遇到此错误:
return this.roles?.includes(role.toString()) ? true : false;
^
SyntaxError: Unexpected token '.'
at wrapSafe (internal/modules/cjs/loader.js:915:16)
at Module._compile (internal/modules/cjs/loader.js:963:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (/workspace/diwimaModelWeb/lib/network/index.js:13:14)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
我使用 typescript,tsconfig.ts 中配置的构建目标是“es2020”。我可以检查代码并用 null cheking 替换所有可选链接,但我宁愿不这样做,因为我之前部署它没有问题。
对于遇到此问题的任何人。我在自己写这个问题的过程中修复了它,我注意到我使用不同的节点和 npm verisons 来构建和上传,nvm 就像那样棘手:D。我还在 tsconfig 中选择了“es2017”。不是 100% 确定是什么修复了它。
我遇到了同样的问题,确实是节点版本不匹配。 (虽然不是 npm,但那不重要)。
解决步骤:
检查您的本地节点版本:
nvm --version
(如果您从他们的网站手动安装,我建议现在开始 use nvm :)确保在
package.json
中设置相同 例如"engines": {"node": "14"},
根据需要在
列表tsconfig.json
中设置您的 ES 版本。 例如"target": "ES2020",
它应该与您的节点版本兼容。 ES versions' feature highlights here and the list of node versions supported by firebase here.
可选,如果您仍有问题:
确保到目前为止提到的所有内容都在您的 firebase 应用程序的
functions
文件夹中(例如,您没有意外地在根文件夹中安装依赖项)。如果需要,检查并更新 firebase 工具和 firebase 包。例如
npm install --save firebase-functions
删除
package-lock.json
然后再次构建 + 部署(npm run lint && tsc
和firebase deploy --only functions
)。有可能你的一些依赖安装搞砸了,例如你没有 --save 它们(至少我在上一步尝试解决最初的问题时这样做了)。