Karma webpack错误:没有这样的文件或目录/ _karma_webpack_ /

时间:2016-05-23 00:35:11

标签: webpack karma-runner karma-webpack

我正在使用脚本

// 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)

以下是gistkarma.conf.jswebpack.config.js的链接。我已经遗漏了其他文件,因为这些文件(加上上面的test-index.js)是当前流程中涉及的唯一文件。

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

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

1 个答案:

答案 0 :(得分:1)

问题在于尝试将原始配置重用于karma webpack配置密钥。

我通过将karma配置更改为:

解决了这个问题
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,并且是从Enzyme + Karma + Webpack guide复制的。还特定于酶的工作方式,请注意没有明确的resolve声明,因为webpack会自动添加'.js''.json',因为酶在内部需要两个文件。另一种方法是显式声明json loader。