无法再获取节点或 ts-node/register 以使用 es2020(flatMap 不是函数)

Posted

技术标签:

【中文标题】无法再获取节点或 ts-node/register 以使用 es2020(flatMap 不是函数)【英文标题】:Cannot get node or ts-node/register to use es2020 anymore (flatMap is not a function) 【发布时间】:2020-03-04 14:58:56 【问题描述】:

尽管以前可以在我的代码中使用,但我无法将 flatmap 与 node 或 ts-node 一起使用。我不确定发生了什么变化,但我收到了这个错误'TypeError: [x].flatMap is not a function'flatMap() 应该是一个函数,因为我明确地将 x 设为一个数组(这段代码在没有问题之前就可以工作)。

这是我的 tsconfig.json


    "compilerOptions": 
      "moduleResolution": "node",
      "target": "es2020",
      "esModuleInterop": true,
      "sourceMap": true,
      "strictNullChecks": true,
      "outDir": "out",
      //"strictBindCallApply": true,
      //"strict": true
    

这是我的船长


    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "$workspaceFolder/src/main.ts",
            "outFiles": ["$workspaceFolder/out/**/*.js"],
            "preLaunchTask": "npm: build",
            "runtimeArgs": ["-r", "esm"],
            "stopOnEntry": true,
            "console": "integratedTerminal",
        ,
        
            "type": "node",
            "request": "launch",
            "name": "Mocha Tests",
            "program": "$workspaceFolder/node_modules/mocha/bin/_mocha",
            "args": [
                "-u",
                "tdd",
                "--timeout",
                "999999",
                "--colors",
                "--require",
                "esm",
                "--require",
                "ts-node/register",
                "--project",
                "$workspaceFolder/tsconfig.json",
                "$workspaceFolder/**/*spec.ts"
            ],
            "console": "integratedTerminal",
            "stopOnEntry": false,
        
    ]

以及相关的平面图调用

(x: discord.Message | discord.Message[] | null): (discord.Message | null)[] => [x].flatMap(
                                // @ts-ignore
                                (t: discord.Message | discord.Message[] | null): (discord.Message | discord.Message[] | null) => t
                            )

另一个不起作用的例子:

const test = [1,3,4,[5,4,2]].flatMap(x => x);

TypeError: [1,3,4,[5,4,2]].flatMap is not a function

ts-node/register 或 ts-node 似乎都不再尊重"target": "es2020",我不确定到底发生了什么变化。 VScode 确实有用于 flatMap 的智能感知的上下文。谁能向我解释为什么它不再工作了?

【问题讨论】:

【参考方案1】:

问题是我在安装程序后节点的版本号有冲突。我已经停止使用 node 的 snap 包并开始使用 nvm。

【讨论】:

以上是关于无法再获取节点或 ts-node/register 以使用 es2020(flatMap 不是函数)的主要内容,如果未能解决你的问题,请参考以下文章

我无法再从 facebook 获取令牌

JSDOM获取子节点的一些方法

微信小程序:boundingClientRect获取节点Frame再布局

微信小程序:boundingClientRect获取节点Frame再布局

突然无法再将功能部署到 Firebase 项目

RocketMQ集群平滑下线或重启某个节点