我在尝试让TS应用程序在Bitbucket管道中编译时遇到问题。
这是我的.yaml文件:
image: node:10.16.3
pipelines:
pull-requests:
'**':
- step:
name: Install dependencies
caches:
- node
script:
- npm install -g typescript
- npm install
- parallel:
- step:
name: Build App
caches:
- node
size: 2x
script:
- node -v && npm -v && tsc -v
- npm run build
- step:
name: Run Tests
caches:
- node
script:
- echo "Run tests"
然而,它失败了,并出现以下错误:
bash:tsc:找不到命令
我花了很长时间在谷歌上搜索,试图找到答案,但我没能解决这个问题。几个月前,我试图克服,但失败了,今天我又打了一个回环,尝试了一下,但仍然没有成功。
如有任何帮助,我们将不胜感激。感谢您对的支持
根据您的问题和评论,这里有两个单独的问题:
- 顶级管道脚本找不到
tsc
,可能是因为安装了typescript
程序包后没有更新其环境。我建议永久地省略- node -v && npm -v && tsc -v
行(或至少它的&& tsc -v
部分(,因为当你尝试- npm run build
时,任何丢失的部分都会很快出现 - 您的管道内存不足。8GB的
size: 2x
似乎是您现在可以请求的最多的,因此您必须查看构建脚本,以寻找减少内存占用的方法。一些想法:- 您已经在安装步骤中要求提供最新版本的TypeScript(这本身可能令人担忧;请考虑未来的重大更改(,但您使用的是Node.js 10。我不知道Node.js 14是否会有更低的占地面积,但它值得一试
- 确保您的构建脚本本身没有并行运行任何内容。(管道配置中的
parallel
步骤不算在内,因为它使用了一个单独的VM。( - 检查构建脚本调用的工具选项,以获得可以启用的优化
- 最坏的情况是,您可能不得不以某种方式将项目的构建拆分为符合Bitbucket限制的部分
您有tsc: command not found
错误,因为您在第一步安装了typescript,而不是在实际使用它的第二步。Bitbucket管道不会自动将环境传递到下一步。您可以:
- 在第一步中提供
artifact: node_modules
选项。在这种情况下,Bitbucket Pipelines会将整个node_modules
文件夹传递到下一步 - 只需在需要的步骤中直接执行
npm install
,就不需要传递node_modules
另一个提示:
- 应该将
npm ci
用于CI管道,以防止意外的包更新