javascript - Adobe括号实时预览无法到达 node.js 服务器

  显示原文与译文双语对照的内容

我在使用Adobe括号运行 node.js 服务器时遇到问题。 在实时预览中( 网址是 http://localhost:SOMERANDOMPORT/path/to/file.html ),我启动服务器。 如果将 http://localhost:3000/test 直接输入到另一个选项卡中,它将显示正确的JSON 。

然后,我将一个事件函数添加到 file.html 中的元素中,单击它对我的服务器进行AJAX请求。 但是,单击实时预览中的元素失败,而将调用错误回调。

如何修复此问题? 我怀疑这与AJAX请求发送到的事实有关 http://localhost:SOMERANDOMPORT/test 而不是 http://localhost:3000/test,但我似乎找不到解决方案。

一切都在本地运行 below 是我的服务器:


var express = require('express');
var mysql = require('mysql');

var app = express();

app.get('/test', function(req, res){
 var connection = mysql.createConnection(...);

 connection.query("SELECT author FROM posts", function(err, results) {
 if (err) {
 console.log(err);
 console.log('Error on retrieving data.');
 res.send(err);
 return;
 }
 console.log(results[results.length - 1]);
 res.send(results[results.length - 1]);//return last row
 });

 connection.end();
});

app.listen(3000);
console.log('Listening on port ' + port);

和事件函数:


function getAuthor() {
 $.ajax({
 type: 'GET',
 url: '/test',,
 success: function(data, status) {
 $('.author').text('Authored by ' + data.author);
 },
 error: function(jqXHR, status, error) {//this always get called
 $('.author').text('Something went wrong.');
 }
 });
}

我喜欢任何帮助。

时间: 作者:

最简单的解决方法是直接在你自己的节点服务器上进行实时预览,让它从正确的端口号( 而不是为位于不同端口的括号服务器提供页面服务) 提供页面本身。 请参见"使用自己的后端"下的括号维基。上的指令。"

这个缺点是 HTML live更新被禁用- 但是你仍然会得到动态更新,而括号又会在保存HTML内容时返回更简单的"实时重新载入"。

为了保持动态的HTML更新,你需要绕过端口号的差异。 你可以为测试硬编码一个 localhost:3000 基 URL,但是由于端口号不匹配,你将运行相同的原始问题。 围绕着工作,那将是相当 involved 。

另一种保持全活动预览体验的方法是 shim 所有的$.ajax() 调用,这样它们就返回硬编码的虚拟数据。 如果你已经对单元测试进行了一些模拟,那么你可以能能够重用这个现有的基础结构。

作者:
...