node.js - NodeJS 的 Github 操作 - 本地文件的 'Error: Cannot find module'

标签 node.js github mocha.js node-modules github-actions

我有一个 Node.js 项目的 GitHub 工作流文件:

name: NodeJS CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

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

    steps:
    - uses: actions/checkout@v2
    - name: Using Node version ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      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

> my-repo@1.0.4 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到要求
  • 不同版本的 Node
  • 我的机器上和 Github Action 中相同版本的 Node

  • 但似乎没有什么可以解决错误。我的 node_modules文件夹在 .gitignore 中被忽略.
    repo 是私有(private)的,但我认为这与它无关。

    最佳答案

    原来 git 没有在我的文件中检测到区分大小写的变化。
    运行 git mv -f src/models/Credential.js src/models/credential.js然后插入更改修复它。

    关于node.js - NodeJS 的 Github 操作 - 本地文件的 'Error: Cannot find module',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64336306/

    相关文章:

    javascript - 在 NestJS 中将 Swagger 文档生成为 JSON/YAML

    github - 存储库名称作为 GitHub 操作环境变量?

    javascript - 使用 Mocha 测试异步函数的控制台输出 (process.stdout.write)

    node.js - Mocha 未在子文件夹中获取测试

    node.js - google.gmail() 给出错误 TypeError : google. gmail 不是函数?

    node.js - Sequelize 查询执行循环

    javascript - 我必须用 Zapier 替换 Code 上的一些特殊字符

    linux - Curl 下载 ASCII 格式的 tar.gz 文件

    git - 显示我是个人资料合作者的存储库

    javascript - 如果需要登录,如何在 Node.js 服务器端使用 Mocha Chai 测试 RESTful CRUD api?