Карма-машинопись не может найти модуль "readable-stream / duplex.js" - PullRequest
0 голосов
/ 02 марта 2019

Самое близкое, что я нашел здесь, это Карма-машинопись не может найти модуль , но это относится к проблеме, когда карма-машинопись не может найти исходный файл, а не зависимость.Его решение все равно не сработало.

Я пытаюсь настроить модульное тестирование для проекта TypeScript с использованием Karma, Mocha и Chai.Я решил использовать пакет karma-typcript в npm для настройки моих тестов, чтобы им не нужно было сначала компилировать в Javascript.Когда я запускаю 'karma start karma.conf.js', он запускается немного, а затем возвращает:

02 03 2019 14:08:28.791:DEBUG [coverage.karma-typescript]: Initializing
02 03 2019 14:08:28.799:DEBUG [compiler.karma-typescript]: Setting up deferred project compilation
02 03 2019 14:08:28.800:DEBUG [coverage.karma-typescript]: Configuring coverage preprocessor
02 03 2019 14:08:28.805:ERROR [karma-server]: Server start failed on port 9876: Error: Cannot find module 'readable-stream/duplex.js'
npm ERR! Test failed.  See above for more details.

Я попытался вручную добавить readable-stream, хотя readable-stream находится в пакете karma-typcript.json, но, похоже, ничего другого не делает.Я настроил karma.conf.js следующим образом:

const puppeteer = require('puppeteer');
process.env.CHROME_BIN = puppeteer.executablePath();

module.exports = function(config) {
config.set({

basePath: '',

frameworks: ['mocha', 'chai', 'karma-typescript'],

karmaTypescriptConfig: {
  compilerOptions: {
    module: "commonjs"
  },
  tsconfig: "./src/ts/tsconfig.json"
},

files: [
  'src/**/*.ts'
],

exclude: [
],

preprocessors: {
  "**/*.ts": ["karma-typescript"]
},

reporters: ['progress', 'karma-typescript'],

port: 9876,

colors: true,

// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_DEBUG,

autoWatch: false,

browsers: ['ChromeHeadless'],

singleRun: true,

concurrency: Infinity
})
}

Мой tsconfig.json выглядит следующим образом и хранится в той же папке, что и все исходные файлы .ts (src / ts /):

{
   "compilerOptions": {
   "target": "es2018",
   "outDir": "../js",
   "rootDir": "./",
   "strict": true,
   "moduleResolution": "node",
   "esModuleInterop": true
   }
}
...