标签: ts-node

如何将 0x(用于 Node.js 分析)与 TS-Node 结合使用?

我正在使用 ts-node 执行用 TypeScript 编写的脚本。我想使用0x检查火焰图。这是我使用 ts-node 执行的当前命令:

> ts-node -r tsconfig-paths/register scripts/my-script.ts

如何使用 0x 捕获脚本执行的火焰图?或者,是否有另一种方法来捕获执行代码的火焰图?

node.js typescript flamegraph ts-node

2
推荐指数
1
解决办法
1984
查看次数

如何使 ts-node 知道“d.ts”文件中声明的命名空间?

我有一个MY_FILE.ts这样的文件:

const someFunction = (param: MY_NAMESPACE.PARAM) : boolean => { // DO SOMETHING };
Run Code Online (Sandbox Code Playgroud)

参数类型是通过文件上的Inamespace调用来访问的。像这样:MY_NAMESPACEdeclareMY_NAMESPACE.d.ts

src/MY_NAMESPACE.d.ts

declare namespace MY_NAMESPACE {
  type PARAM: SOME_TYPE
}
Run Code Online (Sandbox Code Playgroud)

我需要运行该MY_FILE.ts文件,其中包含一个脚本。

这工作正常:

npx babel-node src/MY_FILE.ts --extensions ".ts"
Run Code Online (Sandbox Code Playgroud)

不起作用(我希望它能正常工作):

npx ts-node src/MY_FILE.ts
Run Code Online (Sandbox Code Playgroud)

我收到此错误:error TS2503: Cannot find namespace MY_NAMESPACE

在此输入图像描述

注意:在我的实际情况中,MY_NAMESPACE称为TYPES.

我怎样才能让它工作ts-node

namespaces typescript babel-node ts-node .d.ts

1
推荐指数
1
解决办法
1131
查看次数

NestJS + TypeORM 中的 JoinTable 问题

我在 NestJS + TypeORM 中遇到一个奇怪的问题。

我几乎已经在实体中创建了一个 ManyToMany 关系,并且在该关系的拥有方,我添加了不带参数的 @JoinTable() 。

运行 Nest build 后,entity.js 文件添加了一个新的 import const browser_1 = require("typeorm/browser");,我发现它用于在编译的 JS 文件 => 中声明 JoinTable 选项browser_1.JoinTable()

问题是,当使用 typeorm 生成新的迁移文件时,我不断收到以下错误:

import { __awaiter, __generator } from "tslib";
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:979:16)
    at Module._compile (internal/modules/cjs/loader.js:1027:27)
    at Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Object.require.extensions.<computed> [as .js] (C:\XXX\XXX\dev\XXX\pistis-api\node_modules\ts-node\src\index.ts:1045:43)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (C:\XXX\XXX\dev\XXX\pistis-api\dist\modules\collaborator\entity\collaborator.entity.js:17:19)
    at Module._compile (internal/modules/cjs/loader.js:1063:30) …
Run Code Online (Sandbox Code Playgroud)

typeorm ts-node nestjs

1
推荐指数
1
解决办法
681
查看次数

使用 typescript 和 ts-node 的自定义节点 REPL

我想创建一个自定义节点 REPL 并使其与打字稿一起使用。如 ts-node 文档中所述

节点评估

nodeEval(代码:字符串,上下文:任何,_文件名:字符串,回调:(错误:null | >错误,结果?:任何)=>任何):void

定义于 src/repl.ts:91

eval 实现与节点的 REPL API 兼容

如果您想手动创建自己的节点 > REPL 实例并将 eval 委托给此 ReplService,则可以在高级场景中使用。

例子:

import {start} from 'repl'; 
const replService: tsNode.ReplService = ...; // assuming you have already created a ts-node ReplService
const nodeRepl = start({eval: replService.eval});
Run Code Online (Sandbox Code Playgroud)

块引用

参数

代码:字符串

上下文:任何

_文件名:字符串

回调:(错误:null | 错误,结果?:任何)=> 任何

(err: null | 错误,结果?: 任何): 任何

参数

错误:空| 错误

可选结果:任意

返回任何

返回无效

nodeEvalReplService是使用方法创建的类的成员createRepleval它似乎与可以向下传递给方法的参数兼容start

所以我写了这个:

import { …
Run Code Online (Sandbox Code Playgroud)

shell node.js read-eval-print-loop ts-node

1
推荐指数
1
解决办法
788
查看次数

ts-node 和 ESM:未知文件扩展名“.ts”

我在使用 ts-node 和 ESM 构建项目时遇到了巨大的麻烦。关于这个主题还有其他几个问题,但我已经尝试了所有这些问题的解决方案,但一无所获。很难判断哪些信息已经过时,大多数答案都涉及在配置中添加其他选项,这对我的情况似乎没有任何影响。

这是演示设置:

节点 v20.4

Package.json 的类型为:“module”

作为我当前使用的启动脚本npx ts-node-esm src/index.ts

ts-node 和 Typescript 都安装在项目本地

tsconfig.json如下:

{
    "compilerOptions": {
      "target": "ESNext",
      "baseUrl": ".",
      "esModuleInterop": true,
      "moduleResolution": "NodeNext",
      "module": "ESNext",
    },
    "types": ["node"]
}
Run Code Online (Sandbox Code Playgroud)

我们的演示文件 - src/index.ts:

import { sayHi } from "src/helpers.js";
sayHi();
Run Code Online (Sandbox Code Playgroud)

和 src/helpers.ts:

export function sayHi() { console.log('hi!') }
Run Code Online (Sandbox Code Playgroud)

到目前为止,我当前在运行时遇到的错误是Unknown file extension ".ts" for src\index.ts

(我了解到“tsx”可能会起作用,但如果我这里发生配置错误,我想了解出了什么问题。)

除了手头的实际问题之外,我也不介意一些更广泛的建议。这实际上明智吗?我读到的所有内容都表明新项目应该使用 ESM,因为 CommonJs 没有特别的优势(前提是您可以使 ESM 工作......)。同时,ts-node(或类似的)的功能对于实现快速开发反馈循环的作用似乎非常重要。考虑到这两个事实,我很惊讶我在设置它时遇到了这么多麻烦。

javascript node.js typescript ts-node

1
推荐指数
1
解决办法
2813
查看次数

如何在重新启动时阻止 ts-node-dev 发送桌面通知?

ts-node-dev每次重新启动时都会发出桌面通知。这是超级烦人的。我如何关闭它们?

node.js ts-node

0
推荐指数
1
解决办法
1343
查看次数