打字稿“tsc”编译器挂在构建管道中

如何解决打字稿“tsc”编译器挂在构建管道中

我遇到了 tsc 编译在 buildkite 构建管道中无限期挂起的问题。

我找不到 tsc 的任何详细选项,所以我得到的最好的是 --traceResolution

在我的本地机器上,输出的最后几行是:

======== Type reference directive 'jest' was successfully resolved to '/Users/djohnston/git/myproject/node_modules/@types/jest/index.d.ts' with Package ID '@types/jest/index.d.ts@26.0.20',primary: true. ========
✨  Done in 6.35s.

在构建管道上,最后的命令是:

[2021-03-12T00:59:08Z] ======== Type reference directive 'jest' was successfully resolved to '/app/node_modules/@types/jest/index.d.ts' with Package ID '@types/jest/index.d.ts@26.0.20',primary: true. ========

所以看起来解析完全完成了。

还有什么可能导致 TypeScript 挂在这里?可能是 this question 所暗示的内存问题吗?

我可以添加一些进一步的命令/标志来帮助调试吗?

内存调查

构建代理是一个 AWS EC2 t2.large 实例 - 具有 8GB RAM。

我已将我的管道命令更新为:

top -bn1 &&  yarn test 

测试在哪里:

tsc --version && tsc --diagnostics && tsc  --traceResolution

我得到:

[2021-03-12T01:51:50Z] Mem: 3348592K used,4818096K free,504K shrd,1576K buff,2005316K cached
[2021-03-12T01:51:50Z] cpu:   0% usr   0% sys   0% nic 100% idle   0% io   0% irq   0% sirq
[2021-03-12T01:51:50Z] Load average: 1.49 0.47 0.17 2/280 279
[2021-03-12T01:51:50Z]   PID  PPID USER     STAT   VSZ %VSZ cpu %cpu COMMAND
[2021-03-12T01:51:50Z]   279     6 root     R     1580   0%   0   0% top -bn1
[2021-03-12T01:51:50Z]     6     1 root     S     1580   0%   1   0% /bin/sh -e -c .buildkite/scripts/prepare_npmrc.sh && yarn install && yarn bootstrap && yarn format:check && yarn lint && top -bn1 &&  yarn test && yarn build
[2021-03-12T01:51:50Z]     1     0 root     S     1052   0%   1   0% /sbin/docker-init -- docker-entrypoint.sh /bin/sh -e -c .buildkite/scripts/prepare_npmrc.sh && yarn install && yarn bootstrap && yarn format:check && yarn lint && top -bn1 &&  yarn test && yarn build

所以这似乎证实了我们确实有 8GB,尽管只有 4.8GB 可用。

第二部分:

[2021-03-12T01:54:23Z] $ tsc --version && tsc --diagnostics && tsc  --traceResolution
[2021-03-12T01:54:23Z] Version 4.2.3
[2021-03-12T01:54:23Z] Files:             1199
[2021-03-12T01:54:23Z] Lines:           194583
[2021-03-12T01:54:23Z] Nodes:           504127
[2021-03-12T01:54:23Z] Identifiers:     163089
[2021-03-12T01:54:23Z] Symbols:         201735
[2021-03-12T01:54:23Z] Types:            37565
[2021-03-12T01:54:23Z] Instantiations:  691770
[2021-03-12T01:54:23Z] Memory used:    256799K
[2021-03-12T01:54:23Z] I/O read:         0.13s
[2021-03-12T01:54:23Z] I/O write:        0.00s
[2021-03-12T01:54:23Z] Parse time:       5.04s
[2021-03-12T01:54:23Z] Bind time:        2.01s
[2021-03-12T01:54:23Z] Check time:       8.02s
[2021-03-12T01:54:23Z] Emit time:        0.00s
[2021-03-12T01:54:23Z] Total time:      15.07s

看起来只需要 250MB - 所以我看不出这是内存问题。

有什么建议吗?

更新 - 看起来它与 lerna/monorepos 有关。

这个项目的结构其实是这样的:

/
 package.json 
    test: "lerna run test"
    build: "lerna run build"
 packages/
   package-a 
      test: "tsc && jest" <- is failing here
   package-b
      test: "..." 
      build: "..."

所以在我运行“yarn test”的pipeline.yml中,它实际上运行的是“lerna run test”,它将运行那个单独的命令。

如果我将其更改为“cd packages/package-a && yarn test”,则它通过了。

这可能与这个 typescript issue 有关,他们提到 docker workdir 目录可能是问题所在。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?