1

我正在使用脚本

// src/test-index.js
const context = require.context('./src', true, /-test\.js$/)
context.keys().forEach(context)

而且我一直遇到错误

> NODE_ENV=test karma start --single-run --no-auto-watch
...
ERROR [karma]: { Error: no such file or directory
    at MemoryFileSystem.readFileSync (PROJECT_ROOT/node_modules/memory-fs/lib/MemoryFileSystem.js:107:10)
    at MemoryFileSystem.readFile (PROJECT_ROOT/node_modules/memory-fs/lib/MemoryFileSystem.js:297:21)
    at doRead (PROJECT_ROOT/node_modules/karma-webpack/index.js:156:26)
    at Plugin.readFile (PROJECT_ROOT/node_modules/karma-webpack/index.js:160:3)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)
  code: 'ENOENT',
  errno: 34,
  message: 'no such file or directory',
  path: '/_karma_webpack_/test-index.js' }
Error: no such file or directory
    at MemoryFileSystem.readFileSync (PROJECT_ROOT/node_modules/memory-fs/lib/MemoryFileSystem.js:107:10)
    at MemoryFileSystem.readFile (PROJECT_ROOT/node_modules/memory-fs/lib/MemoryFileSystem.js:297:21)
    at doRead (PROJECT_ROOT/node_modules/karma-webpack/index.js:156:26)
    at Plugin.readFile (PROJECT_ROOT/node_modules/karma-webpack/index.js:160:3)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

这是我的要点karma.conf.js的链接和webpack.config.js。我忽略了其他文件,因为这些(加上test-index.js上面的)是当前进程中涉及的唯一文件。

节点 v6.2.0,npm v3.8.9(通过 nvm 安装)。所有依赖项都是在过去几个小时内安装的,所以我使用的是最新版本。

关于什么可能是错的或我还能尝试什么的任何想法?

4

1 回答 1

1

问题在于尝试将我的原始配置重用于业力webpack配置密钥。

我通过将业力配置更改为:

webpack: {
  module: {
    loaders: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel'
      }
    ]
  },
  externals: {
    cheerio: 'window',
    'react/addons': true,
    'react/lib/ExecutionEnvironment': true,
    'react/lib/ReactContext': true
  },
  node: {
    fs: 'empty'
  }
},

这里重要的是module对象和node对象(以防止找不到模块“fs”错误)。该externals部分是特定于的,是从他们的Enzyme + Karma + Webpack 指南中复制的。同样具体到酶是如何工作的,请注意没有明确的resolve声明,因为 webpack 会自动添加'.js''.json',因为酶在内部需要这两个文件。另一种方法是显式声明 json 加载器。

于 2016-05-23T12:02:45.820 回答