在尝试部署meteor时,我通过以下方式安装节点光纤:
$ cd bundle/server
Run Code Online (Sandbox Code Playgroud)
然后安装光纤
$ npm install fibers
Run Code Online (Sandbox Code Playgroud)
它似乎安装但有这条消息:
`linux-x64-v8-3.14` exists; testing
Binary is fine; exiting
fibers@1.0.1 node_modules/fibers
Run Code Online (Sandbox Code Playgroud)
但是,在使用以下代码部署代码时:
node bundle/main.js
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
throw new Error('`'+ modPath+ '.node` is missing. Try reinstalling `node-fibe
~/main_repo/bundle/server/node_modules/fibers/bin/linux-x64-v8-3.20/fibers.node` is missing. Try reinstalling `node-fibers`?
Run Code Online (Sandbox Code Playgroud)
我可以看到linux-x64-v8-3.xx的版本不同.我正在使用Ubuntu 13.04
节点版本为v0.11.3,NPM版本为1.2.18
我有一个MYSQL表,只需要在今天日期之前30天内获得数据.它的数据可能在今天之后的几年内.为了更快地查询,我通常会删除旧记录,因为我认为没有必要搜索旧记录.但是,如果我们需要它来进行分析,我仍会保留记录的备份副本.原始表是这样的:
CREATE TABLE featured_deal (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
fsa VARCHAR(10),
poster_id int(11),
dealid bigint(20),
bookedDate date,
createDate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY `featured_unique`(fsa, bookedDate)
)
Run Code Online (Sandbox Code Playgroud)
我创建了一个表,这是该表的副本,称为历史:
CREATE TABLE featured_deal_history (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
fsa VARCHAR(10),
poster_id int(11),
dealid bigint(20),
bookedDate date,
createDate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY `featured_unique`(fsa, bookedDate)
)
Run Code Online (Sandbox Code Playgroud)
每当原始表上发生插入时,我都会触发填充历史表:
CREATE TRIGGER `featured_to_history`
AFTER INSERT ON lst_enmasse_featured_deal
FOR EACH ROW
INSERT INTO lst_enmasse_featured_deal_history (fsa,poster_id,dealid,bookedDate,createDate)
VALUES (NEW.fsa,NEW.poster_id,NEW.dealid,NEW.bookedDate,NEW.createDate)
Run Code Online (Sandbox Code Playgroud)
最后,我使用cron作业和命令清理表: …
我们正在使用JCrop库来裁剪个人资料图片.当用户更改其个人资料照片时,新照片仍然使用旧图像尺寸.这适用于Chrome,但在Firefox中不起作用.我使用destroy删除了上一个图像和JCrop:
jcrop_api.destroy();
Run Code Online (Sandbox Code Playgroud)
我还添加了这行代码,试图清除包含宽度和高度的样式.
$('#target').removeAttr('style');
Run Code Online (Sandbox Code Playgroud) 因此,我们在应用程序中构建了一个文件上传器,用于处理本地环境.我们将文件上传到公共/上传,我们可以使用以下方式读取文件:
http://localhost:3000/upload/filename.extension
Run Code Online (Sandbox Code Playgroud)
现在,当我们将代码移至生产时,我们使用检查:
getUploadPath = function () {
var fs = Npm.require('fs');
var path = Npm.require('path');
var devPath = path.join(process.cwd(),"../../../../../public");
var prodPath = path.join(process.cwd(),"../client/app/");
if (fs.existsSync(devPath)) {
return path.join(devPath,"upload");
}
else {
return path.join(prodPath,"upload");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这会将文件保存到{prod_path}/programs/client/app/upload.但是,我无法在应用程序中使用该文件.令人惊讶的是,本地的所有文件似乎也存在于同一个上传文件夹中,并且可由应用程序访问.我错过了什么?
我在cloudflare后面有一个网站.我需要通过SSL启用websockets而不关闭cloudflare支持.我有一个PRO计划,因此不会获得新的websocket支持.我正在使用Nginx代理SSL连接到节点服务器上运行的Web套接字.现在,我读到某个地方,cloudflare可以使用已批准的端口支持websockets.因此,我使用8443作为Nginx端口,使用另一个端口作为节点服务器.使用wscat它会返回200错误.
$ wscat -c wss://xyz.com:8443
error: Error: unexpected server response (200)
Run Code Online (Sandbox Code Playgroud)
我知道websocket期待101代码.但是,如果我访问https://xyz.com:8443,我可以看到节点服务器显示的页面告诉我代理正在运行.此外,一旦我关闭cloudflare支持,websocket就开始工作了.有任何线索让这个工作.我知道我可以创建一个子域但我更喜欢在cloudflare后面运行websocket.
我有一个PHP服务器绑定到端口并侦听套接字.我的服务器是在PHP脚本中启动的:
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($socket, 0, $port);
Run Code Online (Sandbox Code Playgroud)
然后它监听端口:
socket_listen($socket);
Run Code Online (Sandbox Code Playgroud)
当HTTP消息从客户端到达时,服务器将读取标头:
$header = socket_read($socket_new,1024);
Run Code Online (Sandbox Code Playgroud)
然后将连接存储在Memcache存储中.这适用于大多数浏览器,包括safari,firefox和Chrome的Canary.但是,它不适用于chrome.浏览器抛出一条错误消息:
与'ws://xyz.com:9001/chat_server.php'的WebSocket连接失败:WebSocket握手期间出错:错误的'Sec-WebSocket-Accept'标头值
我的Chrome版本是:版本38.0.2125.111米(64位)
meteor ×2
node.js ×2
websocket ×2
cloudflare ×1
css ×1
jcrop ×1
jquery ×1
mysql ×1
nginx ×1
node-fibers ×1
performance ×1
php ×1
replication ×1