【问题标题】:GitHub Actions resolve wrong Node.js pathGitHub Actions 解决了错误的 Node.js 路径
【发布时间】:2020-11-18 03:34:32
【问题描述】:

我正在 Jest 中和通过 GitHub 操作运行我的测试。不幸的是,它解析的路径不正确。

在我的source file 中,我使用以下逻辑来要求来自同一项目目录的 JSON:

const json = require(require('path').resolve('.') + 'i18n', 'en.json');

在 Jest 中,路径被 jest.mock 模拟:

jest.mock(require('path').resolve('.', 'i18n', 'en.json'), () => {
  return { title: 'English title', paragraph: 'Hello World' };
});

在本地这工作正常,但是当我将更改推送到 GitHub 操作时,项目文件夹的名称是重复的:

Cannot find module '/home/runner/work/simple-translator/simple-translator/i18n/en.json' from 'tests/translator.node.test.js'

我认为它应该只包含一次simple-translator。 您可以看到失败的工作流here 的实时示例。 这就是整个test that fails

你知道为什么 GitHub Actions 中的路径解析不能正常工作吗?

【问题讨论】:

  • 我们的工作流程中也有双重回购名称,但一切正常。但是为什么它们包含两次会很有趣。尝试使用 process.cwd() 或 GitHub Environment var GitHub.workspace
  • 我用 process.cwd() 和 __dirname 尝试过,但没有成功。唯一需要测试的是 GitHub.workspace

标签: javascript node.js jestjs github-actions


【解决方案1】:

让我试试,虽然我不熟悉 jest 或 github CI 过程...
测试程序生成的mock json文件位于tests/i18n/en.json,而您的工作进程正在寻找路径`${moduleHomeRoot}/i18n/en.json` 。我想你应该在 jest.mock 中添加 '..',如下所示:

jest.mock(require('path').resolve('..', 'i18n', 'en.json'), () => {
  return { title: 'English title', paragraph: 'Hello World' };
});

【讨论】:

    猜你喜欢
    • 2021-04-04
    • 2020-09-06
    • 2021-02-22
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 2021-04-25
    相关资源
    最近更新 更多