15

我刚开始使用 ts-node。这是一个非常方便的工具。运行时间看起来很清晰。但它不适用于 CLI 解决方案。我无法将参数传递到编译的脚本中。

ts-node --preserve-symlinks src/cli.ts -- printer:A

这没用。我正在寻求帮助。

4

4 回答 4

17

你没有提供你的脚本,所以我只能猜测你是如何提取参数的。这就是我使用自己的测试脚本使其工作的方式args.ts

const a = process.argv[2];
const b = process.argv[3];
const c = process.argv[4];
console.log(`a: '${a}', b: '${b}', c: '${c}'`);

像这样调用package.json

"scripts": {
   "args": "ts-node ./args.ts -- 4 2 printer:A"
}

这会给我这样的输出:

a: '4', b: '2', c: 'printer:A'
于 2019-01-21T02:43:00.667 回答
4

尝试这个:

node --preserve-symlinks -r ts-node/register src/cli.ts printer:A
于 2020-02-11T06:00:37.010 回答
1

NODE_OPTIONS

对于节点选项的情况,除了-r ts-node/registerhttps://stackoverflow.com/a/60162828/895245中提到之外,他们现在还在文档中提到NODE_OPTIONS环境变量:https ://typestrong.org/ts-node/docs/配置/#node-flags

NODE_OPTIONS='--trace-deprecation --abort-on-uncaught-exception' ts-node ./index.ts

快速测试:

main.ts

(async () => { throw 'asdf' })()

并运行:

NODE_OPTIONS='--unhandled-rejections=strict' ts-node main.ts
echo $?

正如1预期的那样。

在节点 v14.16.0、ts-node v10.0.0 上测试。

于 2021-05-26T07:46:06.193 回答
1

命令

ts-node ./test.ts hello stackoverflow

ts文件

console.log("testing: >>", process.argv[2], process.argv[3]);

输出

$ testing: >> hello stackoverflow

快乐编码

于 2021-12-28T10:44:17.907 回答