简体   繁体   English

Javascript不能在Heroku上工作但在本地工作,我该如何解决?

[英]Javascript is not working on Heroku but works locally, how do I solve this?

I was able to push my code and deploy to Heroku, beforehand it was working locally on Cloud9. 我能够推送我的代码并部署到Heroku,事先它在Cloud9本地工作。 I hooked up the buildpacks for ruby on rails and add a postgres db to avoid deploy errors. 我在rails上连接ruby的buildpacks并添加了一个postgres数据库以避免部署错误。 When I looked at the deployed code, the javascript for my pages were disabled. 当我查看部署的代码时,我的页面的javascript被禁用。

I have tried getting rid of the //= tree required in my application.rb file, removing the gemlock file, installing a sass alternative since the current one is depreciated, heroku asset clean and restart. 我已经尝试删除application.rb文件中所需的// =树,删除gemlock文件,安装sass替代品,因为当前的折旧,heroku资产清理并重新启动。 And ran rake assets:precompile for both local and heroku 并运行rake资产:本地和heroku的预编译

This is after heroku run rake assets:precompile 这是在heroku run rake assets:precompile

NoMethodError: undefined method `[]' for nil:NilClass
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/sass_processor.rb:278:in `sprockets_context'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/sass_processor.rb:124:in `asset_path'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/sass_processor.rb:137:in `asset_url'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/sass_processor.rb:209:in `font_url'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/script/tree/funcall.rb:151:in `block in _perform'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/stack.rb:108:in `block in with_function'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/stack.rb:135:in `with_frame'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/stack.rb:108:in `with_function'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/script/tree/funcall.rb:149:in `_perform'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/script/tree/node.rb:50:in `perform'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/script/tree/list_literal.rb:75:in `block in _perform'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/script/tree/list_literal.rb:75:in `map'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/script/tree/list_literal.rb:75:in `_perform'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/script/tree/node.rb:50:in `perform'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:398:in `visit_prop'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/base.rb:36:in `visit'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:158:in `block in visit'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/stack.rb:79:in `block in with_base'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/stack.rb:135:in `with_frame'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/stack.rb:79:in `with_base'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:158:in `visit'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:513:in `block (2 levels) in visit_directive'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:513:in `map'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:513:in `block in visit_directive'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:179:in `with_environment'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:512:in `visit_directive'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/base.rb:36:in `visit'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:158:in `block in visit'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/stack.rb:79:in `block in with_base'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/stack.rb:135:in `with_frame'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/stack.rb:79:in `with_base'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:158:in `visit'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/base.rb:52:in `block in visit_children'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/base.rb:52:in `map'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/base.rb:52:in `visit_children'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:167:in `block in visit_children'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:179:in `with_environment'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:166:in `visit_children'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/base.rb:36:in `block in visit'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:186:in `visit_root'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/base.rb:36:in `visit'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:157:in `visit'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/visitors/perform.rb:10:in `visit'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/root_node.rb:36:in `css_tree'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/tree/root_node.rb:20:in `render'
/app/vendor/bundle/ruby/2.5.0/gems/sass-3.7.4/lib/sass/engine.rb:290:in `render'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/sass_compressor.rb:48:in `call'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/sass_compressor.rb:28:in `call'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:75:in `call_processor'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:57:in `block in call_processors'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:56:in `reverse_each'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/processor_utils.rb:56:in `call_processors'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/loader.rb:134:in `load_from_unloaded'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/loader.rb:60:in `block in load'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/loader.rb:44:in `load'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/cached_environment.rb:20:in `block in initialize'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/cached_environment.rb:47:in `load'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/base.rb:66:in `find_asset'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/base.rb:73:in `find_all_linked_assets'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:134:in `block in find'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:133:in `each'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:133:in `find'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/sprockets/manifest.rb:186:in `compile'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:68:in `block (3 levels) in define'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-3.7.2/lib/rake/sprocketstask.rb:147:in `with_logger'
/app/vendor/bundle/ruby/2.5.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:67:in `block (2 levels) in define'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/cli/exec.rb:74:in `load'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/cli/exec.rb:74:in `kernel_load'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/cli/exec.rb:27:in `run'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/cli.rb:360:in `exec'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/vendor/thor/lib/thor.rb:369:in `dispatch'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/cli.rb:20:in `dispatch'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/vendor/thor/lib/thor/base.rb:444:in `start'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/cli.rb:10:in `start'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/exe/bundle:30:in `block in <top (required)>'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/lib/bundler/friendly_errors.rb:121:in `with_friendly_errors'
/app/vendor/bundle/ruby/2.5.0/gems/bundler-1.15.2/exe/bundle:22:in `<top (required)>'
/app/bin/bundle:3:in `load'
/app/bin/bundle:3:in `<main>'
Tasks: TOP => assets:precompile

I was looking to have a fully functional site, but the push to heroku seemed to cause the application to not have any javascript functionality, when it should be. 我希望有一个功能齐全的网站,但推送到heroku似乎导致应用程序没有任何JavaScript功能,应该是。 Please help, sorry for the annoying posts but I really want to get this down. 请帮忙,抱歉烦人的帖子,但我真的想把它搞定。

If you are using rails-bootstrap gem, there is a file named bootstrap.coffee.js. 如果您使用的是rails-bootstrap gem,则会有一个名为bootstrap.coffee.js的文件。 You can try removing it and see if it works. 您可以尝试删除它,看看它是否有效。

Also, You can also try pushing it in this manner(precompiling before pushing it to heroku): 此外,您还可以尝试以这种方式推送它(在将其推送到heroku之前进行预编译):

rake assets:precompile RAILS_ENV=production
git add .
git commit -a -m "JS"
git push heroku master

Other than that if none of it is working, from config/environments/production.rb: 除此之外,如果它都不起作用,请从config / environments / production.rb:

config.assets.compile = true 

The last approach is not advised. 不建议采用最后一种方法。

I found that I was missing the correct files in my assets.rb and application.js files. 我发现我在assets.rbapplication.js文件中缺少正确的文件。 After that I precompiled and pushed as mentioned above and it worked! 在那之后我按照上面提到的那样进行了预编译和推送,并且它有效! Thank you guys for the help! 谢谢你们的帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM