playframework 2 jsRoutes未在zentasks教程中定义

时间:2013-03-16 20:59:30

标签: playframework-2.0

我一直在播放框架网站上的zentasks教程。我正在阅读本教程的这一部分

http://www.playframework.com/documentation/2.1.0/JavaGuide6

昨晚工作正常,但是当我今天早上醒来时,我在firefox中遇到错误 - > firebug jsRoutes未定义。我可以在代码中向上滚动并点击我头脑中的/ assets / javascripts / routes,它就是javascript里面的jsRoutes。我没有改变任何东西,但为了以防万一,我从播放的示例文件夹中获得了zentasks应用程序的副本。我跑了它并得到了同样的错误。我担心我改变了一些东西而忘记了我的书面版本和zentasks应用程序的复制版本。所以我再次从示例文件夹中复制了zentasks应用程序并运行它。它有效,没有错误,没有问题点击应用程序中的按钮。所以我想我已经改变了一些东西并且忘记了,我已经准备好开始追踪问题了。

然后发生了一些奇怪的事情。我运行的应用程序,我正在写我自己和IT工作!错误消失了。我尝试了我制作的第一个副本,它也有效。然后我尝试使用我的应用程序版本内置到eclipse中的Web浏览器,但它无效。然后我尝试在chrome中运行它并且我收到了相同的错误“jsRoutes未定义”但我可以向上导航并单击javascript源/ assets / javascripts / routes并且我可以在脚本中看到jsRoutes。我继续关注教程,因为它在firefox中工作。在本教程结束时,您将使用jUnit测试网页。测试失败并且没有定义相同的错误“jsRoutes”。我包括屏幕截图。任何人都可以帮忙吗?

the Initial Error

the link to the script

the script showing the definition of jsRoutes

working in firefox

error in the test console

2 个答案:

答案 0 :(得分:3)

过去两个小时我一直在和同样的问题作斗争,错误很愚蠢,但不容易看到。

秘密在conf/routes文件中:如果你有这样的话:

# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET     /                           controllers.Application.index()

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)

GET     /login                          controllers.Application.login()

POST    /login                      controllers.Application.authenticate()

GET     /logout                     controllers.Application.logout()

POST    /projects                   controllers.Projects.add()
POST    /projects/groups            controllers.Projects.addGroup()
DELETE  /projects/:project          controllers.Projects.delete(project: Long)
PUT     /projects/:project          controllers.Projects.rename(project: Long)

GET     /projects/:project/tasks    controllers.Tasks.index(project: Long)
POST    /projects/:project/tasks    controllers.Tasks.add(project: Long, folder: String)


GET     /assets/javascripts/routes          controllers.Application.javascriptRoutes()

尝试下载javascriptRoutes时,由于规则GET /assets/*file controllers.Assets.at(path="/public", file)具有更高的优先级,因此无法正确下载。相反,此规则必须位于conf/routes的末尾,因此文件应该具有以下内容:

# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET     /                           controllers.Application.index()

GET     /login                          controllers.Application.login()

POST    /login                      controllers.Application.authenticate()

GET     /logout                     controllers.Application.logout()

POST    /projects                   controllers.Projects.add()
POST    /projects/groups            controllers.Projects.addGroup()
DELETE  /projects/:project          controllers.Projects.delete(project: Long)
PUT     /projects/:project          controllers.Projects.rename(project: Long)

GET     /projects/:project/tasks    controllers.Tasks.index(project: Long)
POST    /projects/:project/tasks    controllers.Tasks.add(project: Long, folder: String)


GET     /assets/javascripts/routes          controllers.Application.javascriptRoutes()

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file) 

使用该解决方案,我认为您的错误将消失=)。

答案 1 :(得分:0)

我有同样的问题。我的解决方案是将我的main.coffee文件与示例库中工作的zentask应用程序中的文件进行比较。事实证明我的代码中有一个缩进问题 - 一旦纠正它运行良好。空白在coffeescript中很重要,我相信标识的默认设置是2个空格。