我无法让Babel可选链接运算符在故障中工作

uklbhaso  于 2022-12-08  发布在  Babel
关注(0)|答案(3)|浏览(320)

我是后端环境编码的新手,目前正在使用glitch.com编写代码。我有一个项目,正在尝试使用passport注册用户和登录。我已经为passport实现了一个github策略,但在尝试将用户信息记录到数据库中时出现错误。基本上,将email: profile.email[0].value || 'no public email'作为选项之一传递会在我尝试自己登录时给我一个空引用错误。所以我想做email: profile.email[0]?.value || 'no public email'这样的事情
我已经尝试了几天,让这个与"@babel/plugin-proposal-optional-chaining": "^7.6.0"工作,我试图避免npm命令的时间,因为它有点难以遵循发生了什么,所以我试图安装我需要在packages.json(虽然我没有尝试npm命令以前,也不能工作)。
目前,我的依赖项中包含以下内容(我还尝试将内容移到devDependencies中):

"babel-cli": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"babel-register": "^6.26.0",
"@babel/plugin-proposal-optional-chaining": "^7.6.0",
"@babel/core": "^7.6.0"

我在packages.json中也有以下内容:"babel": {"plugins": [["@babel/core"], ["@babel/plugin-proposal-optional-chaining"]]},(我也试过,里面没有任何选项)
那不起作用所以我加了一句

require("@babel/core").transform("code", {
  plugins: [["@babel/core"], ["@babel/plugin-proposal-optional-chaining"]]
});

auth.js文件(我试图在其中实现该操作符的文件)。我也尝试过不使用@babel/core插件。当它不起作用时,我决定尝试使用以下代码添加.babelrc

{
  "plugins": [["@babel/core"], ["@babel/plugin-proposal-optional-chaining"]]
}

这不起作用,所以我想也许我需要把它改为.babelrc.json,但这也不起作用。根据文档,似乎至少有一次尝试应该起作用。有人能告诉我我做错了什么吗?

rn0zuynd

rn0zuynd1#

所以我终于让它工作了。没有必要单独编译文件,老实说,我也很难让它那样工作。所以这里有一个列表,列出了我在尝试让它工作时发现的事情。
babel server.js --out-file script-compiled.js && node script-compiled.jsstart脚本非常适合于预编译所提供的主脚本文件。然而,我花了很长时间才让它工作起来。相反,我有一个原始的行,babel-node server.js i就足够了。因为它是在运行时编译的,而不是创建一个输出文件,所以我不必担心协调它的依赖关系,这些依赖关系也需要编译,在运行时一次编译完。
有两个原因导致它不起作用:1:我省略了@babel/node依赖项,而2:在我做研究的过程中,我发现Babel引擎本身什么都不做,而是依赖插件来编译它所需要的。我已经有了@babel/plugin-proposal-optional-chaining依赖项,但仅此而已。显然有一个名为preset-env的预设依赖项的完整库,它包含在依赖项@babel/preset-env中,在包含依赖项之后,然后我必须将它包含在.babelrc文件中,除了我实际上正在寻找的插件:

{
  "plugins": ["@babel/plugin-proposal-optional-chaining"],
  "presets": ["@babel/env"]
}
w1e3prcc

w1e3prcc2#

这些更改应适用于.babelrc文件。

{
  "plugins": ["@babelcore", "@babel/plugin-proposal-optional-chaining"]
}

然而,你并没有按照下面的命令运行babel传递的代码。

"start": "node server.js --exec babel-node --presets es2015,stage-2"

它应该看起来像下面的东西。

"scripts": {
    "start": "babel server.js --out-file script-compiled.js && node script-compiled.js"
  }

这里我只传递了一个文件给巴别塔
server.js =〉script-compiled.js
您可以从documentation查看编译目录
您可能需要确保使用模板的绝对路径,或者将模板复制到transpiled script文件夹可以访问的位置

nlejzf6q

nlejzf6q3#

在我的情况下,添加:

"engines": {
   "node": ">=16.x"
}

package.json已解决的问题

相关问题