'Unexpected string' 当 运行 业力与 webpack/babel
'Unexpected string' when running karma with webpack/babel
我正在尝试 运行 karma 使用 webpack 使用 babel 预处理代码,然后可以使用 mocha 进行测试。但是,每当我 运行 它时,我都会出错。
spec/tests.spec.js:
import 'chai/register-expect';
karma.conf.js:
const webpackConfig = require('./webpack.config.js');
const tests = './spec/**/*.spec.js'
module.exports = function(config) {
config.set({
singleRun: true,
browsers: ['Chrome'],
frameworks: ['mocha'],
files: [
tests
],
preprocessors: {
tests: ['webpack'],
},
webpack: webpackConfig,
})
}
webpack.config.js:
module.exports = {
mode: 'production',
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', {
'modules': false
}]
}
}
]
}
}
当我 运行 业力时,我得到以下输出:
'Uncaught SyntaxError: Unexpected string\nat http://localhost:9876/base/spec/tests.spec.js?af68737606dd067ef21aa6efadfc004fb1d05454:1:8\n
对应于import
行。
如果我从测试中删除所有 es6 代码,那么它 运行 会成功,这意味着 webpack/babel 没有被正确调用。
知道为什么这不起作用吗?
所以这与任何工具都无关,结果是 JS 陷阱。
在 karma.conf.js 我在做:
const tests = './spec/**/*.spec.js'
...
preprocessors: {
tests: ['webpack'],
}
这里的问题是 tests
作为对象键转换为字符串 "tests"
.
解决方案是使用:
preprocessors: {
[tests]: ['webpack'],
}
以便 tests
正确扩展为变量值。
我正在尝试 运行 karma 使用 webpack 使用 babel 预处理代码,然后可以使用 mocha 进行测试。但是,每当我 运行 它时,我都会出错。
spec/tests.spec.js:
import 'chai/register-expect';
karma.conf.js:
const webpackConfig = require('./webpack.config.js');
const tests = './spec/**/*.spec.js'
module.exports = function(config) {
config.set({
singleRun: true,
browsers: ['Chrome'],
frameworks: ['mocha'],
files: [
tests
],
preprocessors: {
tests: ['webpack'],
},
webpack: webpackConfig,
})
}
webpack.config.js:
module.exports = {
mode: 'production',
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', {
'modules': false
}]
}
}
]
}
}
当我 运行 业力时,我得到以下输出:
'Uncaught SyntaxError: Unexpected string\nat http://localhost:9876/base/spec/tests.spec.js?af68737606dd067ef21aa6efadfc004fb1d05454:1:8\n
对应于import
行。
如果我从测试中删除所有 es6 代码,那么它 运行 会成功,这意味着 webpack/babel 没有被正确调用。
知道为什么这不起作用吗?
所以这与任何工具都无关,结果是 JS 陷阱。
在 karma.conf.js 我在做:
const tests = './spec/**/*.spec.js'
...
preprocessors: {
tests: ['webpack'],
}
这里的问题是 tests
作为对象键转换为字符串 "tests"
.
解决方案是使用:
preprocessors: {
[tests]: ['webpack'],
}
以便 tests
正确扩展为变量值。