我要求帮助让.js脚本文件中的JS在使用rails进行测试时运行。
如果我将代码放在.js文件中并在application.js的第一行中需要它,那么该脚本就不会运行。在开发中它执行js! (虽然存在语法错误或其他原因)。如果我将.js代码放入< script>中的.html.erb文件中标签,它工作正常!
在撰写本文时,这是我的app/assets/javascripts/application.js
:
// LIBRARIES
//= require this_webpage_is_toast
//= require jquery
//= require jquery_ujs
//= require jquery-ui/autocomplete
//= require bootstrap-sprockets
//= require angular
//= require angucomplete-alt
// LOCAL FILES
//= require libfigure/util
//= require libfigure/move
//= require libfigure/chooser
//= require libfigure/param
//= require libfigure/figure
//= require libfigure/dance
//= require dances
//= require_tree .
注意第一个要求,这就是我知道JS没有运行的方式。这是因为文件app/assets/javascripts/this_webpage_is_toast.js
包含:
document.body.innerHTML = "if you are reading this in a web page, then javascript is successfully executing from a file!"
它从不执行该行。
但它/ apps / with applications.js,因为如果我写
//= require file_that_does_not_exist
它抱怨模板丢失。
毫无疑问,我的一些骨头错误配置错误。
使用phantomjs 2.1.1.0 使用poltergeist 1.10.0
思想?
更新:这些.js文件是如何包含的?事实证明生成的html页面始于:
"<!DOCTYPE html><html><head>\n <title>Contra</title>\n <link rel=\"stylesheet\" media=\"all\" href=\"/assets/application.css\"> <script src=\"/assets/application.js\"></script>...
答案 0 :(得分:2)
我可以想到两个可能的原因。第一个是先前包含的JS文件中的语法错误,防止以下文件在它们全部连接在一起时被处理。由于文件不起作用是第一个文件需要它可能不是那样。第二个原因是您在某些时候有预编译资产,并且在公共/资产中有一个清单文件(可能类似于public / assets / .sprockets-manifest - * .json),这可能会阻止测试环境重建和提供服务。最新版本的资产。尝试删除该文件,或运行rake assets:clobber