1

我一直在播放框架站点上的 zentasks 教程。我在教程的这一部分

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

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

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

初始错误

脚本的链接

显示 jsRoutes 定义的脚本

在火狐工作

测试控制台中的错误

4

2 回答 2

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) 

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

于 2013-05-03T00:35:18.613 回答
0

我有同样的问题。我的解决方案是将我的 main.coffee 文件与示例库中正在运行的 zentask 应用程序中的文件进行比较。原来我的代码中存在缩进问题 - 一旦纠正它就可以正常运行。空格在咖啡脚本中很重要,我相信默认设置是 2 个空格代表一个标识。

于 2013-08-30T00:58:45.163 回答