这是我使用'rails s'
在本地部署时遇到的错误couldn't find file 'grayscale-sass/assets/bower_components/jquery.easing/js/jquery.easing.js' with type 'application/javascript'
Extracted source (around line #20):
20 //= require grayscale-sass/assets/bower_components/jquery.easing/js/jquery.easing.js
这是我的application.js文件
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require grayscale-sass/assets/bower_components/jquery.easing /js/jquery.easing.js
//= require grayscale-sass/assets/bower_components/bootstrap/dist/js/bootstrap.js
//= require grayscale-sass/assets/js/grayscale.js
但是,如果我进入我的application.js文件并删除require jquery前面的'// =',则错误消失,我的应用程序运行。但是,当我部署到heroku时,它会失败并出现错误,表示
ExecJS::ProgramError: Unexpected token: name (jquery) (line: 14, col: 8, pos: 586)
第14行将是我的application.js文件 需要jquery
答案 0 :(得分:0)
Rails'资源编译器(即Sprockets)无法找到该文件。删除// =时,错误消失,因为它在编译资产时停止查找。这意味着您最终得到的实际JavaScript包含“require ...”行,这是无效的JavaScript而不是您想要的(require=
是Rails / Sprocket的东西,而不是JavaScript的东西。)
要解决此问题,您需要将文件放在正确的位置。对于像grayscale-sass这样的第三方库,标准方法是将其复制到your-project/vendor/assets/…
。也就是说,有更好的方法将第三方前端项目拉入Rails。 Rails Assets对此有好处。