Не удается запустить тест кармы - невозможно разрешить модуль [sqlite3] и другие - PullRequest
0 голосов
/ 04 мая 2018

У меня проблема с запуском модульного теста для моего стека: - узел - ц-узел - express.js - продолжить - MySQL - карма

Когда я запускаю Karma, я получаю много ошибок, подобных этой:

04 05 2018 20:49:57.255:ERROR [karma]: Error: Unable to resolve module [sqlite3] from [/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/sequelize/lib/dialects/sqlite/connection-manager.js]
{
  "basedir": "/home/userName/Projects/commercial/projectName/projectName-cpf",
  "extensions": [
    ".js",
    ".json",
    ".ts",
    ".tsx"
  ],
  "moduleDirectory": [
    "node_modules"
  ],
  "modules": {
    "assert": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/assert/assert.js",
    "buffer": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/buffer/index.js",
    "child_process": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/karma-typescript/dist/bundler/resolve/empty.js",
    "cluster": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/karma-typescript/dist/bundler/resolve/empty.js",
    "console": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/console-browserify/index.js",
    "constants": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/constants-browserify/constants.json",
    "crypto": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/crypto-browserify/index.js",
    "dgram": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/karma-typescript/dist/bundler/resolve/empty.js",
    "dns": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/karma-typescript/dist/bundler/resolve/empty.js",
    "domain": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/domain-browser/source/index.js",
    "events": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/events/events.js",
    "fs": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/karma-typescript/dist/bundler/resolve/empty.js",
    "http": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/stream-http/index.js",
    "https": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/https-browserify/index.js",
    "module": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/karma-typescript/dist/bundler/resolve/empty.js",
    "net": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/karma-typescript/dist/bundler/resolve/empty.js",
    "os": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/os-browserify/browser.js",
    "path": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/path-browserify/index.js",
    "punycode": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/punycode/punycode.js",
    "querystring": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/querystring-es3/index.js",
    "readline": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/karma-typescript/dist/bundler/resolve/empty.js",
    "repl": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/karma-typescript/dist/bundler/resolve/empty.js",
    "stream": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/stream-browserify/index.js",
    "_stream_duplex": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/readable-stream/duplex.js",
    "_stream_passthrough": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/readable-stream/passthrough.js",
    "_stream_readable": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/readable-stream/readable.js",
    "_stream_transform": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/readable-stream/transform.js",
    "_stream_writable": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/readable-stream/writable.js",
    "string_decoder": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/string_decoder/lib/string_decoder.js",
    "sys": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/util/util.js",
    "timers": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/timers-browserify/main.js",
    "tls": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/karma-typescript/dist/bundler/resolve/empty.js",
    "tty": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/tty-browserify/index.js",
    "url": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/url/url.js",
    "util": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/util/util.js",
    "vm": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/vm-browserify/index.js",
    "zlib": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/browserify-zlib/lib/index.js",
    "_process": "/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/process/browser.js"
  },
  "filename": "",
  "paths": []
}
Error: Cannot find module 'sqlite3' from '/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/sequelize/lib/dialects/sqlite'
    at /home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/karma-typescript/src/bundler/resolve/resolver.ts:194:27
    at /home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/browser-resolve/index.js:265:24
    at /home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/browser-resolve/node_modules/resolve/lib/async.js:46:14
    at process (/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/browser-resolve/node_modules/resolve/lib/async.js:173:43)
    at ondir (/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/browser-resolve/node_modules/resolve/lib/async.js:188:17)
    at load (/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/browser-resolve/node_modules/resolve/lib/async.js:69:43)
    at onex (/home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/browser-resolve/node_modules/resolve/lib/async.js:92:31)
    at /home/userName/Projects/commercial/projectName/projectName-cpf/node_modules/browser-resolve/node_modules/resolve/lib/async.js:22:47
    at FSReqWrap.oncomplete (fs.js:152:21)

Выше ошибка связана с sqlite3, но у меня также есть [pg] модуль и [tedious]

Я увидел, что должен установить одну зависимость для системы БД, которую я использую в своей разработке, поэтому я использую npm install mysql2, но не могу запустить какую-либо задачу по карме.

Есть идеи, где мне искать? Я не вижу этой проблемы ни в одном из вопросов по github и стеку, поэтому думаю, что это в моей конфигурации.

Ниже я публикую свои karma.conf.js, tsconfig.json & package.json

karma.conf.js

module.exports = function (config) {
    config.set({
        frameworks: ["karma-typescript"],
        files: [
            "src/**/*.spec.ts",
            "src/**/*.ts"
        ],
        plugins: [
            require('karma-typescript'),
            require('karma-typescript-preprocessor'),
            require('karma-phantomjs-launcher'),
            require('karma-chrome-launcher'),
        ],
        preprocessors: {
            '**/*.ts': ['karma-typescript']
        },
        karmaTypescriptConfig: {
            tsconfig: "./tsconfig.json"
        },

        reporters: ["progress", "karma-typescript"],
        browsers: [
            // "PhantomJS"
            "Chrome"
        ],
        singleRun: false
    });
};

tsconfig.json:

{
  "compileOnSave": true,
  "compilerOptions": {
    "removeComments": true,
    "noImplicitAny": true,
    "module": "commonjs",
    "target": "es6",
    "sourceMap": true,
    "outDir": "dist",
    "watch": true,
    "skipLibCheck": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  },
  "exclude": [
    "./node_modules/*"
  ]
}

И мои зависимости от package.json:

"dependencies": {
    "axios": "^0.18.0",
    "errorhandler": "^1.5.0",
    "express": "^4.16.3",
    "http-signature": "^1.2.0",
    "mysql2": "^1.5.3",
    "nconf": "^0.10.0",
    "nodemon": "^1.17.3",
    "request": "^2.85.0",
    "sequelize": "^4.37.6"
  },
  "devDependencies": {
    "@types/chai": "^4.1.3",
    "@types/errorhandler": "0.0.32",
    "@types/express": "^4.11.1",
    "@types/mocha": "^5.2.0",
    "@types/nconf": "0.0.37",
    "@types/sinon": "^4.3.1",
    "chai": "^4.1.2",
    "gulp": "^4.0.0",
    "gulp-bump": "^3.1.1",
    "gulp-rimraf": "^0.2.2",
    "gulp-touch-fd": "^2.0.0",
    "gulp-typescript": "^4.0.2",
    "karma": "^2.0.2",
    "karma-chai": "^0.1.0",
    "karma-phantomjs-launcher": "^1.0.4",
    "karma-chrome-launcher": "^2.2.0",
    "karma-mocha": "^1.3.0",
    "karma-sinon": "^1.0.5",
    "karma-typescript": "^3.0.12",
    "karma-typescript-preprocessor": "^0.3.1",
    "mocha": "^5.1.1",
    "reflect-metadata": "^0.1.12",
    "sequelize-typescript": "^0.6.4",
    "sinon": "^5.0.3",
    "ts-node": "^6.0.1",
    "typedoc": "^0.11.1",
    "typescript": "^2.8.3"
  }
...