我试图将一个rails / react应用程序部署到Heroku,但我的rake资产:由于意外令牌(>),预编译一直失败。我已将其缩小到这个快速修复程序,以确保路由更改时路由器的反应路由器滚动到页面顶部(当我将其注释掉时,应用程序部署正常,但是当我将其重新插入时,预编译失败)。
有人可以帮我理解为什么这段代码会导致预编译失败?我认为它与箭头操作符有关,但我真的不明白它是如何工作的。与此同时,我将学习它的作用,以便我可以尝试重新创建它,但我真的很想理解为什么这不适合将来参考。谢谢!
以下是导致问题的代码段:
browserHistory.listen(location => {
setTimeout(() => {
if (location.action === 'POP') {
return;
}
window.scrollTo(0, 0);
});
});
这里是堆栈跟踪的顶部:
remote: -----> Preparing app for Rails asset pipeline
remote: Running: rake assets:precompile
remote: rake aborted!
remote: ExecJS::ProgramError: Unexpected token: operator (>) (line: 11668, col: 33, pos: 318450)
remote: Error
remote: at new JS_Parse_Error (/tmp/execjs20160604-553-1fg4s41js:3572:11870)
remote: at js_error (/tmp/execjs20160604-553-1fg4s41js:3572:12089)
remote: at croak (/tmp/execjs20160604-553-1fg4s41js:3572:20898)
remote: at token_error (/tmp/execjs20160604-553-1fg4s41js:3572:21035)
remote: at unexpected (/tmp/execjs20160604-553-1fg4s41js:3572:21123)
remote: at expr_atom (/tmp/execjs20160604-553-1fg4s41js:3572:29660)
remote: at maybe_unary (/tmp/execjs20160604-553-1fg4s41js:3573:143)
答案 0 :(得分:1)
这是箭头函数语法。重写代码片段解决了问题。我不确定它为什么不喜欢箭头函数语法,但这让它很开心。
browserHistory.listen(function(location) {
setTimeout(function() {
if (location.action === 'POP') {
return;
}
window.scrollTo(0, 0);
});
});