@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+25 -30
+1 -1
resources/celerity/map.php
··· 167 167 'rsrc/externals/javelin/core/__tests__/stratcom.js' => '88bf7313', 168 168 'rsrc/externals/javelin/core/__tests__/util.js' => 'e251703d', 169 169 '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', 171 171 'rsrc/externals/javelin/core/install.js' => '05270951', 172 172 'rsrc/externals/javelin/core/util.js' => 'bdcfee9e', 173 173 'rsrc/externals/javelin/docs/Base.js' => '74676256',
+8 -6
support/aphlict/server/aphlict_server.js
··· 4 4 var util = require('util'); 5 5 var fs = require('fs'); 6 6 7 - JX.require('lib/AphlictListenerList', __dirname); 8 - JX.require('lib/AphlictLog', __dirname); 9 - 10 7 function parse_command_line_arguments(argv) { 11 8 var config = { 12 9 'client-port': 22280, ··· 36 33 37 34 return config; 38 35 } 36 + 37 + require('./lib/AphlictLog'); 39 38 40 39 var debug = new JX.AphlictLog() 41 40 .addConsole(console); ··· 71 70 'documentation for instructions. ' + ex.toString()); 72 71 } 73 72 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 + 74 79 var ssl_config = { 75 80 enabled: (config['ssl-key'] || config['ssl-cert']) 76 81 }; ··· 93 98 debug.log('Configuration test OK.'); 94 99 process.exit(0); 95 100 } 96 - 97 - JX.require('lib/AphlictAdminServer', __dirname); 98 - JX.require('lib/AphlictClientServer', __dirname); 99 101 100 102 var server; 101 103 if (ssl_config.enabled) {
+2 -2
support/aphlict/server/lib/AphlictAdminServer.js
··· 1 - var JX = require('javelin').JX; 1 + var JX = require('./javelin').JX; 2 2 3 - JX.require('AphlictListenerList', __dirname); 3 + require('./AphlictListenerList'); 4 4 5 5 var http = require('http'); 6 6
+3 -3
support/aphlict/server/lib/AphlictClientServer.js
··· 1 - var JX = require('javelin').JX; 1 + var JX = require('./javelin').JX; 2 2 3 - JX.require('AphlictListenerList', __dirname); 4 - JX.require('AphlictLog', __dirname); 3 + require('./AphlictListenerList'); 4 + require('./AphlictLog'); 5 5 6 6 var util = require('util'); 7 7 var WebSocket = require('ws');
+1 -1
support/aphlict/server/lib/AphlictListener.js
··· 1 - var JX = require('javelin').JX; 1 + var JX = require('./javelin').JX; 2 2 3 3 JX.install('AphlictListener', { 4 4 construct: function(id, socket) {
+3 -2
support/aphlict/server/lib/AphlictListenerList.js
··· 1 - var JX = require('javelin').JX; 2 - JX.require('AphlictListener', __dirname); 1 + var JX = require('./javelin').JX; 2 + 3 + require('./AphlictListener'); 3 4 4 5 JX.install('AphlictListenerList', { 5 6 construct: function() {
+1 -1
support/aphlict/server/lib/AphlictLog.js
··· 1 - var JX = require('javelin').JX; 1 + var JX = require('./javelin').JX; 2 2 3 3 var fs = require('fs'); 4 4 var util = require('util');
+6 -14
webroot/rsrc/externals/javelin/core/init_node.js
··· 23 23 func(); 24 24 }; 25 25 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'; 29 28 var content = fs.readFileSync(path); 30 29 var dir = pathModule.dirname(path); 31 30 ··· 37 36 } 38 37 39 38 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 51 43 }; 52 44 53 45 for (k in extra) {