Skip to content

Commit 4636833

Browse files
author
epriestley
committedJan 19, 2015
Fix module imports in Aphlict server
Summary: This was broken in D11383. Basically, I had the `ws` module installed globally whilst testing, but the changes made do not work if the `ws` module is installed locally (i.e. in the `./support/aphlict/server/node_modules` directory). After poking around, it seems that this is due to the sandboxing that is done by `JX.require`. A quick fix is to just //not// use `JX.require`, although you may have a better idea? The error that is occurring is as follows: ``` <<< UNCAUGHT EXCEPTION! >>> Error: Cannot find module 'ws' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) at extra.require (/usr/src/phabricator/webroot/rsrc/externals/javelin/core/init_node.js:48:16) at /usr/src/phabricator/support/aphlict/server/lib/AphlictClientServer.js:10:17 at Script.(anonymous function) [as runInNewContext] (vm.js:41:22) at Object.JX.require (/usr/src/phabricator/webroot/rsrc/externals/javelin/core/init_node.js:58:6) at Object.<anonymous> (/usr/src/phabricator/support/aphlict/server/aphlict_server.js:102:4) at Module._compile (module.js:456:26) >>> Server exited! ``` Test Plan: Now able to start the Aphlict server. Reviewers: joshuaspence Reviewed By: joshuaspence Subscribers: Korvin, epriestley Maniphest Tasks: T6987 Differential Revision: https://secure.phabricator.com/D11425
1 parent 94730a1 commit 4636833

File tree

8 files changed

+25
-30
lines changed

8 files changed

+25
-30
lines changed
 

‎resources/celerity/map.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@
167167
'rsrc/externals/javelin/core/__tests__/stratcom.js' => '88bf7313',
168168
'rsrc/externals/javelin/core/__tests__/util.js' => 'e251703d',
169169
'rsrc/externals/javelin/core/init.js' => '76e1fd61',
170-
'rsrc/externals/javelin/core/init_node.js' => 'd7dde471',
170+
'rsrc/externals/javelin/core/init_node.js' => '7212f324',
171171
'rsrc/externals/javelin/core/install.js' => '05270951',
172172
'rsrc/externals/javelin/core/util.js' => 'bdcfee9e',
173173
'rsrc/externals/javelin/docs/Base.js' => '74676256',

‎support/aphlict/server/aphlict_server.js

+8-6
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ var https = require('https');
44
var util = require('util');
55
var fs = require('fs');
66

7-
JX.require('lib/AphlictListenerList', __dirname);
8-
JX.require('lib/AphlictLog', __dirname);
9-
107
function parse_command_line_arguments(argv) {
118
var config = {
129
'client-port': 22280,
@@ -37,6 +34,8 @@ function parse_command_line_arguments(argv) {
3734
return config;
3835
}
3936

37+
require('./lib/AphlictLog');
38+
4039
var debug = new JX.AphlictLog()
4140
.addConsole(console);
4241

@@ -71,6 +70,12 @@ try {
7170
'documentation for instructions. ' + ex.toString());
7271
}
7372

73+
// NOTE: Require these only after checking for the "ws" module, since they
74+
// depend on it.
75+
76+
require('./lib/AphlictAdminServer');
77+
require('./lib/AphlictClientServer');
78+
7479
var ssl_config = {
7580
enabled: (config['ssl-key'] || config['ssl-cert'])
7681
};
@@ -94,9 +99,6 @@ if (config.test) {
9499
process.exit(0);
95100
}
96101

97-
JX.require('lib/AphlictAdminServer', __dirname);
98-
JX.require('lib/AphlictClientServer', __dirname);
99-
100102
var server;
101103
if (ssl_config.enabled) {
102104
server = https.createServer({

‎support/aphlict/server/lib/AphlictAdminServer.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
var JX = require('javelin').JX;
1+
var JX = require('./javelin').JX;
22

3-
JX.require('AphlictListenerList', __dirname);
3+
require('./AphlictListenerList');
44

55
var http = require('http');
66

‎support/aphlict/server/lib/AphlictClientServer.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
var JX = require('javelin').JX;
1+
var JX = require('./javelin').JX;
22

3-
JX.require('AphlictListenerList', __dirname);
4-
JX.require('AphlictLog', __dirname);
3+
require('./AphlictListenerList');
4+
require('./AphlictLog');
55

66
var util = require('util');
77
var WebSocket = require('ws');

‎support/aphlict/server/lib/AphlictListener.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var JX = require('javelin').JX;
1+
var JX = require('./javelin').JX;
22

33
JX.install('AphlictListener', {
44
construct: function(id, socket) {

‎support/aphlict/server/lib/AphlictListenerList.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
var JX = require('javelin').JX;
2-
JX.require('AphlictListener', __dirname);
1+
var JX = require('./javelin').JX;
2+
3+
require('./AphlictListener');
34

45
JX.install('AphlictListenerList', {
56
construct: function() {

‎support/aphlict/server/lib/AphlictLog.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var JX = require('javelin').JX;
1+
var JX = require('./javelin').JX;
22

33
var fs = require('fs');
44
var util = require('util');

‎webroot/rsrc/externals/javelin/core/init_node.js

+6-14
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,8 @@ JX.onload = function(func) {
2323
func();
2424
};
2525

26-
JX.require = function(thing, relative) {
27-
relative = relative || __dirname + '/..';
28-
var path = relative + '/' + thing + '.js';
26+
JX.require = function(thing) {
27+
var path = __dirname + '/../' + thing + '.js';
2928
var content = fs.readFileSync(path);
3029
var dir = pathModule.dirname(path);
3130

@@ -37,17 +36,10 @@ JX.require = function(thing, relative) {
3736
}
3837

3938
var extra = {
40-
JX : this,
41-
__DEV__ : 0,
42-
window : {},
43-
__dirname : dir,
44-
require : function(thing) {
45-
if (thing == 'javelin') {
46-
return require(dir + '/' + thing);
47-
} else {
48-
return require(thing);
49-
}
50-
}
39+
JX: this,
40+
__DEV__: 0,
41+
window: {},
42+
__dirname: dir
5143
};
5244

5345
for (k in extra) {

0 commit comments

Comments
 (0)
Failed to load comments.