【问题标题】:Not able to launch Karma test: Uncaught Error: Module name "http" has not been loaded无法启动 Karma 测试:未捕获错误:模块名称“http”尚未加载
【发布时间】:2016-06-03 11:07:33
【问题描述】:

我在运行业力测试时遇到此错误

Uncaught Error: Module name "http" has not been loaded yet for context: _. Use require([])
http://requirejs.org/docs/errors.html#notloaded
at C:/projects/xxx_Phase_II/xxx/xxx-web/src/test/javascript/config/node_modules/requirejs/require.js:140

它植根于dev-rest-proxy.js 第一行,上面写着

var http = require('http');

我的package.json 看起来像这样

{
"name": "myApp",
"description": "myApp Web UI",
"engines": {
"node": ">= 0.8.4"
},
"dependencies": {
"express": ">=3.x",
"karma": ">=0.13",
"request": ">=2.27.0"
},
"scripts": {
"pretest": "start node server.js",
"karma": "node ./node_modules/karma/bin/karma start ./karma.unit.conf.js",
"test": "node ./node_modules/karma/bin/karma start ./karma.e2e.conf.js"
},
"version": "0.1.0",
"devDependencies": {
  "jasmine-core": "^2.4.1",
  "jasmine-jquery": "^2.1.1",
  "karma-chrome-launcher": "^0.2.2",
  "karma-jasmine": "^0.3.7",
  "karma-requirejs": "^0.2.5",
 "dev-rest-proxy": "^0.3.0"
 }
}

我的karma.unit.config.js 看起来像这样:

module.exports = function (config) {
    config.set({
        basePath: '../../../',

        frameworks: ['jasmine', 'requirejs'],
        files: files: [
            'app/vendor/**/**/*.js'
        ]


        reporters: ['progress'],

        junitReporter: {
            outputFile: 'test_out/unit.xml',
            suite: 'unit'
        },

        port: 9876,

        runnerPort: 9100,

        colors: true,

        logLevel: config.LOG_INFO,

        autoWatch: true,

        browsers: ['Chrome'],

        captureTimeout: 60000,

        singleRun: false
    });
};

【问题讨论】:

    标签: angularjs node.js requirejs karma-jasmine


    【解决方案1】:

    我修好了。我在files 中给出的模式过于宽泛,因为它包括像dev-rest-proxy.js 这样的节点服务器端文件。我的karma.unit.config.js 有:

            files: [
               'app/vendor/**/**/*.js'
            ], 
    

    所以它会包含这个文件:

    app/vendor/node_modules/dev-rest-proxy/dev-rest-proxy.js
    

    dev-rest-proxy 是后端节点的东西,不应该在浏览器上加载,即它指的是像“http”这样的代码/模块,它纯粹是一个服务器端脚本。

    我错过的重要线索是错误消息本身:

    Module name “http” has not been loaded
    

    http 是节点的服务器端模块。

    【讨论】:

      猜你喜欢
      • 2016-03-01
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      相关资源
      最近更新 更多