如何解决在 Windows10 下不能直接运行 ts-node 的问题

举报
汪子熙 发表于 2022/08/28 09:55:45 2022/08/28
【摘要】 ts-node 是 Node.js 的 TypeScript 执行引擎和 REPL。它 JIT 将 TypeScript 转换为 JavaScript,使您无需预编译即可直接在 Node.js 上执行 TypeScript。 这是通过挂钩 node 的模块加载 API 来实现的,使其能够与其他 Node.js 工具和库一起无缝使用。注意,在 windows 操作系统里,直接运行 ts-nod...

ts-node 是 Node.js 的 TypeScript 执行引擎和 REPL。

它 JIT 将 TypeScript 转换为 JavaScript,使您无需预编译即可直接在 Node.js 上执行 TypeScript。 这是通过挂钩 node 的模块加载 API 来实现的,使其能够与其他 Node.js 工具和库一起无缝使用。

注意,在 windows 操作系统里,直接运行 ts-node, 会报错:

‘ts-node’ is not recognized as an internal or external command,
operable program or batch file.

很多人建议采取全局安装 ts-node 的方法来解决这个问题,但全局安装并不是一个好的解决方案。

参考这个 StackOverflow 讨论.

我不建议在您自己的模块中依赖全局安装的 ts-node,因为如果你这样做,那么安装你的模块的任何人都需要全局安装 ts-node(仅仅一个普通的 npm install 是不够的)然后如果两个模块需要全局安装 ts-node 之类的东西,你可能就会遇到版本冲突的问题。

为避免这种情况,您的所有依赖项都应在 package.json 中定义,并在本地安装在 node_modules 中。

有一个鲜为人知的命令 npx 用于从本地安装在 node_modules 中的模块运行二进制文件。

在 SAP Spartacus 里,ts-node 被用来直接执行项目内的 .ts 文件。一个例子如下:

loadtest:ssr,定义在如下文件里:

我即使在根目录下执行 yarn loadtest:ssr, 也能直接启动嵌套的 core-libs 目录下的 package.json 里定义的 script.

原来在根目录的 package.json 下也添加了一条同名 script:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。