首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法启动karma测试-无法解析模块[sqlite3]等

无法启动karma测试-无法解析模块[sqlite3]等
EN

Stack Overflow用户
提问于 2018-05-05 04:14:43
回答 1查看 434关注 0票数 2

我对我的堆栈运行单元测试有一个问题:- node - ts-node - express.js - sequelize mysql - karma

当我运行Karma时,我得到了很多这样的错误:

代码语言:javascript
复制
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]

我看到我应该为我的开发中使用的DB系统安装一个依赖项,所以我使用npm install mysql2,但我不能启动任何Karma任务。

你知道我应该去哪里找吗?我在任何github & stack问题上都没有看到这个问题,所以我认为这个问题在我的配置中。

下面我发布了我的karma.conf.jstsconfig.json & package.json

karma.conf.js

代码语言:javascript
复制
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

代码语言:javascript
复制
{
  "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中的依赖项

代码语言:javascript
复制
"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"
  }
EN

回答 1

Stack Overflow用户

发布于 2020-06-05 01:27:39

虽然这是旧的,但我也遇到了同样的问题。对我来说,问题是因果报应--它不是用来测试node.js的。Karma通常在chrome-headless浏览器中运行Javascript代码,这是一个完全不同的环境。

解决方案是删除所有的karma依赖项,只使用mocha运行测试

代码语言:javascript
复制
"scripts": {
    "test": "mocha './src/**/*.test.js'"
  },

https://blog.logrocket.com/unit-testing-node-js-applications-using-mocha-chai-and-sinon/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50182466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档