Действия Github для NodeJS — «Ошибка: не удается найти модуль» для локального файла

У меня есть файл рабочего процесса github для проекта NodeJS:

name: NodeJS CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [10.x]

    steps:
    - uses: actions/[email protected]
    - name: Using Node version ${{ matrix.node-version }}
      uses: actions/[email protected]
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm ci
    - run: npm run build --if-present
    - run: npm test
    - name: Upload code coverage
      run: bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

со следующей структурой проекта:

.
├── package-lock.json
├── package.json
├── src
│   ├── api
│   │   ├── calendar.js
│   │   ├── credentials.js
│   │   └── token.js
│   ├── app.js
│   ├── builders
│   │   └── event.js
│   ├── config
│   │   └── index.js
│   ├── loaders
│   │   ├── express.js
│   │   ├── index.js
│   │   └── mongo.js
│   ├── models
│   │   ├── credential.js
│   │   └── token.js
│   ├── scripts
│   │   └── tokenGenerator.js
│   └── services
│       ├── calendar.js
│       ├── credentials.js
│       ├── google.js
│       ├── mongo.js
│       └── token.js
└── tests
    ├── dbHandler.js
    └── services
        ├── calendar.js
        ├── google.js
        └── mongo.js

Локально, когда я запускаю npm test, мои тесты проходят без каких-либо проблем. Однако, когда тесты запускаются в Github Actions, я получаю следующую ошибку:

Run npm test

> [email protected] test /home/runner/work/my-repo/my-repo
> nyc --reporter=html mocha 'tests/**/*.js' --exit


Error: Cannot find module '../models/credential'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/home/runner/work/my-repo/my-repo/src/services/mongo.js:2:140)
etc..

Если у рассматриваемого файла есть относительные требования:

const CredentialSchema = require('../models/credential');
const TokenSchema = require('../models/token');

Я пробовал несколько вещей:

  • использование process.cwd() вместе с остальной структурой папок для получения абсолютного пути к файлу
  • добавление .js к требованию
  • разные версии узла
  • та же версия узла на моей машине и в действии Github

но похоже, что ничего не решает ошибку. Моя node_modules папка игнорируется в .gitignore.

Репо является частным, но я не думаю, что это имеет к нему какое-то отношение.

См. также:  Установка определенной версии python для действия github

Спасибо! :-)

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Tom

    Оказывается, git не обнаружил в моем файле изменения с учетом регистра.

    Запуск git mv -f src/models/Credential.js src/models/credential.js и последующее внесение изменений исправили его.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: