我正在使用脚本
// 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)
以下是gist与karma.conf.js
和webpack.config.js
的链接。我已经遗漏了其他文件,因为这些文件(加上上面的test-index.js
)是当前流程中涉及的唯一文件。
Node v6.2.0,npm v3.8.9(通过nvm安装)。所有依赖项都在过去几个小时内安装完毕,因此我使用的是最新版本。
关于什么可能出错或者我还能尝试什么的任何想法?
答案 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。