实现无限滚动时遇ExecJS错误:post.coffee含保留字‘function’
解决ExecJS::RuntimeError:CoffeeScript中误用保留字"function"
老哥,这个错误其实很好搞定——你在post.coffee里直接用了JavaScript的function关键字,但CoffeeScript有自己的函数定义语法,function是它的保留字,这么写肯定会触发语法报错。
咱们一步步来修正:
先定位到
post.coffee第4行(错误提示里的[stdin]:4:19就是报错位置),你大概率写了类似这样的JS风格代码:function loadMorePosts() {
// 无限滚动的加载逻辑
}把它改成CoffeeScript的函数写法就行,有两种常用方式:
- 单行短函数(适合逻辑简单的场景):
loadMorePosts = -> console.log("加载更多帖子") - 多行函数(无限滚动逻辑一般用这个):
loadMorePosts = -> # 这里写你的无限滚动逻辑,比如发送AJAX请求 $.get '/posts/load_more', (response) -> $('#posts-list').append(response) # 记得重置滚动监听逻辑,避免重复触发
- 单行短函数(适合逻辑简单的场景):
改完之后,重启你的Rails开发服务器,或者手动跑一下rails assets:precompile(开发环境其实会自动编译,但重启更稳妥),再刷新页面应该就不会报这个语法错误了。
另外提一句:如果是从JS转CoffeeScript,记得把其他JS语法也适配过来,比如不用写var声明变量,CoffeeScript会自动处理;如果需要绑定函数上下文,用=>代替->就行。
内容的提问来源于stack exchange,提问作者keith
相关产品推荐
相关产品推荐

