我们有一个使用react_on_rails的Rails 5项目,因此使用了webpack (通过webpacker gem)和babel。我们正在使用capybara webkit运行测试,并且在使用webkit_debug javascript驱动程序时得到此错误。
http://localhost:3001/packs-test/kronos-bundle-b399226ff352220cce47.js|80403|SyntaxError: Unexpected token 'const'我们的生产和测试webpack的WEBPACK VAR INJECTION部分都有const变量,但我认为现代浏览器现在可以使用let和const,所以我们没有注意到。
我们的.babelrc看起来像这样:
{
"presets": [
[
"env",
{
"modules": false,
"targets": {
"node": "current",
"browsers": ["last 2 versions", "safari >= 7"],
"uglify": true
},
"useBuiltIns": true
}
],
"es2015",
"react",
"stage-1"
],
"plugins": [
"transform-flow-strip-types",
"syntax-dynamic-import",
"transform-object-rest-spread",
[
"transform-class-properties",
{
"spec": true
}
]
]
}有什么想法吗?
发布于 2018-01-19 22:27:14
原来有两个问题困扰着我。首先,有两个我们正在使用的模块没有被转换,所以我不得不在webpack中为它们添加显式的包含,以便将它们传递给babel-loader:
{
test: /\.jsx?$/,
include: [path.resolve(__dirname, '../../node_modules/')],
use: [
{
loader: 'babel-loader',
options: {
cacheDirectory: 'tmp/cache/webpacker/babel-loader'
}
}
]
}一旦我这样做了,我发现webpack和poltergeist都需要更多的转换才能得到通用的ES5。为此,我们需要将es5-shim添加到我们的入口点。我选择这样修改我们的/config/webpack/test.js文件:
const environment = require('./environment');
const config = environment.toWebpackConfig();
const entry = config.entry['kronos-bundle'];
config.entry = {
'kronos-bundle': ['es5-shim/es5-shim', 'babel-polyfill', entry]
};
module.exports = config;不确定是否有更好的方法来加载该ployfill,但它现在可以工作。
https://stackoverflow.com/questions/48327618
复制相似问题