【发布时间】:2016-08-09 10:39:09
【问题描述】:
如果不重新启动服务器,我似乎无法更改我的任何 JavaScript 文件 - 这确实扼杀了在 Phoenix 工作的许多实时重新加载乐趣。我不会做大量的 JavaScript,所以我不确定我是否做错了什么。
凤凰版:1.2.0
重现步骤:
- 使用
mix phoenix.new foo创建一个新项目 - 创建
web/static/js/foo.js文件。 - 在该文件中,写入
alert("Hello, world!"); - 在
app.js中,在底部包含import "web/static/js/foo"。 - 使用
mix phoenix.server启动 Phoenix,然后导航到localhost:4000。 - 无论您刷新页面多少次,您都会看到一个带有“Hello world!”的警告框每一次,都不会失败。
- 将
foo.js消息编辑为“Hello worlds!” - 我希望我仍会收到带有更新文本的警报消息,但警报框完全停止出现。只有在我重新启动服务器时它们才会再次出现。
这是预期的行为吗?凤凰城的虫子?我是否以早午餐不期望的方式编写我的 JS 代码?这是巴别塔的问题吗?我应该以不同的方式组织我的代码吗?
应该补充一下,我正在 Linux 上的 Chrome 中开发 - 以防这可能是浏览器问题
编辑:我无法再重现这个确切的问题,但我的非玩具项目仍然存在问题:
我最初的问题是在我实际开发的应用程序中 - 我在 app.js 中有 global.jQuery = require("jquery") 和 global.bootstrap = require("bootstrap")。如果我注释这两行,保存并取消注释,我会在浏览器中收到 Javascript 错误:app.js:16Uncaught Error: Cannot find module 'jquery' from 'web/static/js/app.js'
【问题讨论】:
-
只重新加载浏览器而不是服务器会得到什么?那么您需要了解在客户端运行的 java 脚本。
-
"但警告框停止出现 - 完全" 您在启动
mix phoenix.server的终端中是否收到任何错误(可能与早午餐有关)?您在浏览器的 JS 控制台中是否收到任何错误?如果直接从localhost:4000访问,JS文件是否包含新内容? -
@Jits 我在复制步骤中介绍了这一点。
-
@Dogbert 终端没有错误,Chrome 控制台也没有 JS 错误。我没有直接导航到浏览器中的 JS 文件——这是个好主意。我明天会这样做(我现在是凌晨 3 点 - 睡前发帖)
-
嗯。我无法再重现这个确切的问题。我最初的问题是在我实际开发的应用程序中——我在
app.js中有global.jQuery = require("jquery")和global.bootstrap = require("bootstrap")。如果我注释这两行,保存并取消注释,我会在浏览器中收到 Javascript 错误:app.js:16Uncaught Error: Cannot find module 'jquery' from 'web/static/js/app.js'
标签: javascript phoenix-framework brunch