【问题标题】:Uncaught ReferenceError: require is not defined karma and webpackUncaught ReferenceError: require is not defined 业力和 webpack
【发布时间】:2017-07-13 19:58:39
【问题描述】:

所以我只是尝试将 chai-as-promised 与 karma 和 webpack 一起使用,这就是我得到的。 我已经安装了 chai-as-promised, karma-chai-as-promised, sinon-chai, karma-sinon-chai, karma-webpack 所以我应该很好去但是它不起作用 这是我的 karma.config 文件

var webpackConfig = require('../../build/webpack.test.conf')

module.exports = function (config) {
  config.set({
    browsers: ['ChromeHeadless'],
    frameworks: ['mocha', 'chai-things', 'sinon-chai', 'chai-as-promised'],
    reporters: ['spec', 'coverage'],
    files: [
      '../../node_modules/babel-polyfill/dist/polyfill.js',
      './index.js'],
    preprocessors: {
      './index.js': ['webpack', 'sourcemap']
    },
    webpack: webpackConfig,
    coverageReporter: {
      dir: './coverage',
      reporters: [
        { type: 'lcov', subdir: '.' },
        { type: 'text-summary' }
      ]
    },
    client: {
      captureConsole: true
    }
  })
}

【问题讨论】:

  • 我在使用 es6 导入/导出时遇到了类似的问题,我找到的解决方案是使用 karma-browserify,它适用于我的设置。

标签: webpack karma-runner chai-as-promised


【解决方案1】:

karma-chai-as-promised 通过将 Chai-as-promised 作为script 元素放入窗口,在您的测试中包含 Chai-as-promised。 (请参阅here。)但是,自从Chai-as-promised 6.0 以来,这已不再可行。此版本分发的代码取决于解析 CommonJS require 调用的机器的可用性。它可能是 SystemJS 或 Webpack,或者你有什么,但必须有解决这些调用的东西。所以不可能只是将分布式代码放入网页中。

可能性:

  1. 强制 karma-chai-as-promised 使用旧版本的 Chai-as-promised。 chai-as-promisedkarma-chai-as-promised 的对等依赖项,因此您可以让项目设置早于 6 的版本。

  2. 删除 karma-chai-as-promised,并让 Webpack 将其包含在您的测试包中。

【讨论】:

    【解决方案2】:

    我已将其添加为帮助文件

    import chai from 'chai'
    chai.should()
    import chaiAsPromised from 'chai-as-promised'
    chai.use(chaiAsPromised)
    

    然后你就可以把它当作

    import './chaiAsPromised.helper'
    

    【讨论】:

      猜你喜欢
      • 2019-09-29
      • 2013-08-14
      • 2017-02-25
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      • 2017-08-15
      相关资源
      最近更新 更多