【问题标题】:Running tsc from the Windows command line从 Windows 命令行运行 tsc
【发布时间】:2016-08-13 17:25:30
【问题描述】:

npm 已安装并正在从 IntelliJ IDEA 15 中积极使用

我的目标是在 IntelliJ 中为我的 TypeScript 源代码生成类型,但我想学习使用 Windows 命令行,因此我可以显式指定命令行选项来修补以了解每个选项的作用。我对通过谷歌搜索找到的与设置和使用它相关的各种花絮感到困惑......我确信我错过了一些非常基本的东西,那些博客或回答问题的人认为这是常识...... .

这是我尝试过的以及我看到的......

第 1 步:安装 typescript:

npm install -g typescript

这会在我的系统上安装以下文件/目录结构:

C:\Users\{my user id}\AppData\Roaming\npm\node_modules\typescript
|---bin
|   |--- tsc
|   |--- tscserver
|---lib
|   |--- lib.core.d.ts
|   |--- ...
|   |--- typescriptServices.js
|--- .npmignore
|--- ...
|--- ThirdPartyNoticeText.txt

第 2 步:天真地尝试直接从 Windows 命令行运行 tsc

我通过谷歌搜索找到的示例采用以下形式:

编译单个文件:

tsc app.ts

以上示例来自http://www.primordialcode.com/blog/post/typescript-command-line-compiler

这不起作用,因为:

  1. tsc 的安装目录不在 Windows Path C:\Users\{my user id}\AppData\Roaming\npm\node_modules\typescript\bin,显然这很容易通过更改 Window PATH 环境变量和/或输入要执行的命令时完全限定tsc文件的路径。

  2. 更重要的是,tsc 文件不是 Windows 可执行文件...#! Unix 脚本 (shebang) 是一个死的赠品。

检查tsc 文件:

#!/usr/bin/env node
require('../lib/tsc.js')

第 3 步:尝试从节点命令提示符运行tsc

C:\>node

> tsc

ReferenceError: tsc is not defined
at repl:1:1
at REPLServer.defaultEval (repl.js:252:27)
at bound (domain.js:287:14)
at REPLServer.runBound [as eval] (domain.js:300:12)
at REPLServer.<anonymous> (repl.js:417:12)
at emitOne (events.js:82:20)
at REPLServer.emit (events.js:169:7)
at REPLServer.Interface._onLine (readline.js:210:10)
at REPLServer.Interface._line (readline.js:549:8)
at REPLServer.Interface._ttyWrite (readline.js:826:14)

^C

好的...让我们指定tsc 脚本的完整路径:

C:\&gt;node

&gt; C:\Users\{my user id}\AppData\Roaming\npm\node_modules\typescript\bin\tsc

...

字面上唯一的输出是 ... 在指定 tsc 脚本的完整路径时...我猜它需要参数...但是点击 tab 键会显示似乎是 node 命令的列表(不是 tsc 命令)...所以我不知道这里发生了什么...

现在我被卡住了

调用tsc需要安装/配置/使用什么环境(如图:http://www.primordialcode.com/blog/post/typescript-command-line-compiler)?

和/或

是否有教程或网站可以帮助我从一个干净的 Windows 系统转到能够从命令行使用 TypeScript 编译器为我的 TypeScript 源文件生成类型?

【问题讨论】:

    标签: node.js windows typescript


    【解决方案1】:

    通用解决方案:

    分析

    typescript\bin\tsc文件内容是一个unix脚本,但它在node下运行

    #!/usr/bin/env node //<<< this loads node env
    require('../lib/tsc.js') //<<< this is plain javascript
    

    此文件加载节点,并执行文件:typescript\lib\tsc.js

    解决方案:

    我们希望重现相同的行为。
    在 Windows 上使用 node 运行 .js 文件:

    1. 打开 CMD 或 PowerShell
    2. 类型:node /path/to/typescript/lib/tsc.js -options -as-if-i-was-on-linux
    3. 按回车

    【讨论】:

      【解决方案2】:

      当我在 Windows 10 上安装 typescript(我遵循 https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html)时,我将分享几个陷阱(这让我明白了!)。在与其他人惨遭失败后,我按照 https://github.com/coreybutler/nvm-windows 的说明进行了较早的设置节点接近。

      问题 #1 - tsc 和 tsc.cmd 在路径上(在 %NVM_SYMLINK%) tsc 是 bash 脚本.换句话说,您必须使用命令 tsc.cmd 才能真正调用 Windows 版本!只需调用 tsc 就会(在我的 Powershell 终端中)导致它因奇怪的错误而崩溃。

      问题 #2 - Windows 文件系统锁定语义再次来袭!因为我一直在研究这个问题,所以我在编辑器中打开了 tsc.cmd 文件——它正在锁定文件!这会导致正确的调用(tsc.cmd)失败..直到我关闭编辑器。

      希望这对某人有所帮助..

      【讨论】:

        【解决方案3】:

        我遇到了同样的错误。我添加了系统变量的完整路径。我的案例的完整路径是 C:\Users\User\node_modules\typescript\bin

        现在 tsc 转换我的打字稿文件。

        【讨论】:

          【解决方案4】:

          您不应将 TypeScript 的 bin 文件夹直接添加到 Windows PATH。如您所见,bin 文件夹中的文件不能直接从命令行执行。

          相反,npm 为全局安装包中的每个已配置可执行文件创建一个 .cmd 脚本并将其放入:

          %APPDATA%\npm
          

          尝试更新您的PATH 以包含此文件夹,重新打开命令行并尝试再次运行tsc

          旁注:Windows 的 Node.js 安装程序默认将 Node 和 NPM 添加到您的 Windows 路径。如果您已经正常安装了 Node.js,这应该可以正常工作。关于如何设置节点有什么特别之处吗?

          【讨论】:

          • 出于某种原因,我不得不将 %APPDATA%\npm 的扩展版本添加到我的路径中才能开始工作...非常感谢您的帮助...现在我可以回去工作了... 谢谢! :)
          猜你喜欢
          • 1970-01-01
          • 2012-08-31
          • 1970-01-01
          • 1970-01-01
          • 2013-11-29
          • 2013-06-25
          • 2018-03-14
          • 2018-10-12
          • 1970-01-01
          相关资源
          最近更新 更多