问题
我正在为 Marketplace 做一个自定义的 GitHub Action,以使其更容易在其他项目中使用。
Action 是用 TypeScript 制作的,并使用了一些包,比如typescript
, babel
(编辑:不要再使用 babel 了)@actions/core
和@actions/github
.
当我将Action添加到另一个项目的工作流中时,他可以安装包并构建项目,甚至初始化它,但是当执行开始时,他找不到@actions模块并且@actions/core的核心是未定义的( @actions/core 是第一个使用的包,因此,它使管道崩溃)。
该node_modules
文件夹已正确创建并且包在其中,但在脚本中,它们不会被加载。
可能的原因
当我尝试在我的机器上运行构建版本(构建器版本,带有 ncc 的版本和带有 tsc 的版本)时,会发生同样的错误:
TypeError: Cannot read property 'getInput' of undefined
编辑:问题是包的不正确导入@actions/core
附加信息
为了能够安装软件包并构建,我必须在我的action.yml
文件中执行此操作:
runs:
using: "composite"
steps:
- run: cd ${{ github.action_path }}
shell: bash
- run: yarn --cwd ${{ github.action_path }} --production=true
shell: bash
- run: yarn --cwd ${{ github.action_path }} build
shell: bash
- run: yarn --cwd ${{ github.action_path }} start
shell: bash
我的文件夹结构:
|-dist # THIS IS'NT BEING PUSHED TO THE REPO
|-src
|--index.ts # Where the @actions/core is required
|--... # More files that are imported by index.ts
|-node_modules # THIS IS'NT BEING PUSHED TO THE REPO
|--... # All the packages are here, this is right and ISN'T THE PROBLEM
|-action.yml
|-babel.config.js
|-package.json
|-tsconfig.json
|-yarn.lock
使用上面发送的 action.yml,返回以下错误:
TypeError: Cannot read property 'getInput' of undefined
getInput
是一种方法@actions/core
(它被正确导入并且不是问题)
编辑:那是问题哈哈哈。
如果我不运行yarn install
或不npm install
使用某些脚本,则会发生以下错误:
Error: Cannot find module '@actions/core'
在我看到的教程中,它们都不需要安装软件包,就像它们是自动安装的一样。
我也尝试使用ncc并将编译后的代码推送到操作存储库,但它也不起作用。
我的 action.yml:
runs:
using: "node12"
main: "index.js"
我的文件夹结构:
|-src
|--index.ts # Where the @actions/core is required
|--... # More files that are imported by index.ts
|-node_modules # THIS IS'NT BEING PUSHED TO THE REPO
|--... # All the packages are here, this is right and ISN'T THE PROBLEM
|-action.yml
|-index.js # The compiled code, that is being pushed to the repo
|-package.json
|-tsconfig.json
|-yarn.lock
使用上面的配置,会发生同样的错误:
TypeError: Cannot read property 'getInput' of undefined
这就是我@actions/core
在第一行导入的方式src/index.ts
:
import core from "@actions/core";
- 我没有将 node_modules 推送到存储库,只是 dist 文件夹(我也尝试不使用该文件夹,在操作执行期间构建,但它也没有工作。)
- 我也找到了这篇文章,但也没有用。
问题
- 关于如何在 GitHub Actions 中使用 typescript 的任何想法?
- 为什么模块没有加载?
- 是否有任何教程、文章、视频和任何类型的内容与 TypeScript 和 GitHub Actions for Marketplace 一起使用?我找到了这个模板,但我不知道为什么它有效而我的无效(我没有测试过模板,也许它也不起作用)。