Не удается найти модуль ‘module-name’ при запуске ts-mocha

#typescript #unit-testing #npm #types #mocha.js

#typescript #модульное тестирование #npm #типы #mocha.js

Вопрос:

Когда я запускаю npm test which runs ts-mocha -p ./tsconfig.json tests/**/*.ts , я получаю следующую ошибку.

 Error: Cannot find module 'random-name'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
    at Function.Module._load (internal/modules/cjs/loader.js:508:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (code-locationsrcutility.ts:5:1)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Module.m._compile (code-locationnode_modulests-mochanode_modulests-nodesrcindex.ts:439:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Object.require.extensions.(anonymous function) [as .ts] (code-locationnode_modulests-mochanode_modulests-nodesrcindex.ts:442:12)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (code-locationsrcgive-me-an-avatar.ts:2:1)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Module.m._compile (code-locationnode_modulests-mochanode_modulests-nodesrcindex.ts:439:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Object.require.extensions.(anonymous function) [as .ts] (code-locationnode_modulests-mochanode_modulests-nodesrcindex.ts:442:12)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (code-locationtestsgive-me-an-avatar.test.ts:1:1)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Module.m._compile (code-locationnode_modulests-mochanode_modulests-nodesrcindex.ts:439:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Object.require.extensions.(anonymous function) [as .ts] (code-locationnode_modulests-mochanode_modulests-nodesrcindex.ts:442:12)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.exports.requireOrImport (code-locationnode_modulesmochalibesm-utils.js:20:12)
    at Object.exports.loadFilesAsync (code-locationnode_modulesmochalibesm-utils.js:33:34)
    at process._tickCallback (internal/process/next_tick.js:68:7)
    at Function.Module.runMain (internal/modules/cjs/loader.js:757:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
npm ERR! Test failed.  See above for more details.
 

Я тестирую модуль с именем файла utility.test.ts , который использует import { Utility } from "../src/utility"; этот Utility.ts файл, импортирующий модуль узла import * as RandomNameGenerator from "random-name"; . Этот модуль существует в node_modules папке внутри @types папки.

Примечание: я не тестирую функциональность случайного имени. Я тестирую другие методы использования в файле утилиты.

tsconfig.json выглядит следующим образом

 {
    "compilerOptions": { 
      "target": "es6", 
      "module": "commonjs", 
      "strict": true, 
      "declaration": true,
      "outDir": "./lib"
    },  
    "exclude": [
        "tests",
        "lib",
        "node_modules"
    ]
  }
 

Я попытался добавить "moduleResolution": "node" в конфигурацию выше, но это не сработало.

Раздел зависимостей в файле package.json.

 "devDependencies": {
    "@types/chai": "^4.2.14",
    "@types/mocha": "^8.2.0",
    "@types/random-name": "^0.1.0",
    "chai": "^4.2.0",
    "mocha": "^8.2.1",
    "mocha-junit-reporter": "^1.22.0",
    "nyc": "^14.1.1",
    "ts-mocha": "^8.0.0",
    "ts-node": "^9.1.1",
    "typescript": "^4.1.3"
  }
 

Я попытался перейти "@types/random-name": "^0.1.0", к разделу dependencies вместо devDependencies , но это тоже не работает.

Есть идеи, почему он не может загружать зависимости? Чего мне не хватает?

Спасибо!