/** * Enable the debugger * @param ui * @param bs * @returns {{url: string, port: number}} */ function enableWeinre (ui, bs) { if (weinreApp) { weinreApp.close(); weinreApp = false; } var port = ui.getOptionIn([WEINRE_NAME, "port"]); var logger = require(path.resolve(__dirname, "../../../node_modules", "weinre", "lib", "utils.js")); logger.log = function (message) { ui.logger.debug("[weinre]: %s", message); }; var weinre = require("weinre"); var external = getHostUrl(ui, bs); weinreApp = weinre.run({ httpPort: port, boundHost: external.hostname, verbose: false, debug: false, readTimeout: 5, deathTimeout: 15 }); return ui.options.get(WEINRE_NAME).toJS(); }
function startWeinreServer (port) { let weinreServer = weinre.run({ httpPort: port, boundHost: '-all-', verbose: false, debug: false, readTimeout: 5, deathTimeout: 15 }); weinreServer.on('listening', () => { fs.readFile(path.resolve(__dirname, '../../template/inject.js.template.html'), 'utf8', function (err,tpl) { if (err) { return console.log(err); } var injectScriptTag = htmlUtil.createScriptTag(tpl, showIframe, config.SPY_WEINRE_DOMAIN, port); new SpyProxy({ port: spyProxyPort, injectScriptTag: injectScriptTag }); // auto open debugger page if (process.platform === 'win32' || process.platform === 'win64') { child_process.exec(`start http://127.0.0.1:${port}/client`); } else { child_process.exec(`open http://127.0.0.1:${port}/client`); } console.log(`${logColor.FgGreen}%s${logColor.Reset}`,`浏览器打开 ---> http://127.0.0.1:${port}/client`); }); }); weinreServer.on('error', (e) => { console.error(e); }) }
}, function(error, port) { if (error) { fis.log.warn('The port %s for weinre is already in use!', basePort); return callback(error); } weinrePort = port; weinreServer = weinre.run({ httpPort: weinrePort, boundHost: defaultHostname, verbose: false, debug: false, readTimeout: 5, deathTimeout: 15 }); openUrl('http://' + defaultHostname + ':' + weinrePort + '/client/#' + weinreUsername); process.on('uncaughtException', function(err) { if (err.message !== 'read ECONNRESET') throw err; }); callback(null, weinreServer, weinrePort); });
d.run(function () { var weinreServer = weinre.run({ httpPort: port, boundHost: '-all-', verbose: false, debug: false, readTimeout: 5, deathTimeout: 15 }); weinreServer.on('listening', function () { fs.readFile(path.resolve(__dirname, '../../template/inject.js.template.html'), 'utf8', function (err, tpl) { if (err) { return console.log(err); } var injectScriptTag = htmlUtil.createScriptTag(tpl, showIframe, config.SPY_WEINRE_DOMAIN); spyProxy.createProxy({ port: spyProxyPort, injectScriptTag: injectScriptTag, weinrePort: port, autoDetectBrowser: autoDetectBrowser }); // auto open debugger page if (process.platform === 'win32' || process.platform === 'win64') { child_process.exec('start http://127.0.0.1:' + port + '/client'); } else { child_process.exec('open http://127.0.0.1:' + port + '/client'); console.log(colors.green('浏览器打开 ---> http://127.0.0.1:' + port + '/client')); } }); weinreServer.on('error', function (e) { console.error(e); }); }); });
var fileServer = require("./lib/file-server_bird/index"); var HttpTranspondBird = require("./lib/http-transpond_bird/index"); var serverSettings = require("./config.js").Server; var child = require('child_process'); var config = require('./config'); var getIP = require("./lib/file-server_bird/getIP"); if (config.weinre && config.weinre.open) { var weinre = require('weinre'); var weinrePort = config.weinre.port || 8080; weinre.run({ httpPort: weinrePort, boundHost: getIP, verbose: false, debug: false, readTimeout: 5, deathTimeout: 15 }); } var httpTranspond = new HttpTranspondBird(); fileServer.start(serverSettings, httpTranspond.transpond);
var puer = module.exports = function ( options ){ options = options || {} var app = express(); var server = http.createServer( app ); helper.extend(options, { views: 'views', engine: { }, port: 8000, app: app, dir: process.cwd(), injector: [] }) var base = options.config? path.resolve( options.dir , path.dirname(options.config)): options.dir; options.views = path.resolve(base, options.views); if( typeof options.rules === 'string') { options.rules = path.resolve( options.rules ) } app.set('views', options.views); // engine var engine = options.engine; engine.vm = velocity({root: [options.views]}); for(var i in engine) if (engine.hasOwnProperty(i)){ app.engine(i, engine[i]) } app.use( injector(options) ); // app.use( bodyParser.json() ); // app.use( bodyParser.urlencoded({ extended: false })) if(options.inspect === true) options.inspect = 9000; var inspect = options.inspect; if( inspect ){ app.use(function(req, res, next){ res.injector.push('<script type="text/javascript" src="http://' + req.get('host').replace(/:\d+/,'') + ':' + inspect + '/target/target-script-min.js#anonymous"></script>'); next(); }) // Thx for browsyer-sync for solving the headache with weinre // https://github.com/BrowserSync/UI/blob/baa9407ee2ace8dd575dc464c46e6d6ab547219e/lib/plugins/remote-debug/weinre.js#L166 var logger = require(path.resolve(__dirname, "../node_modules/weinre/lib/utils.js")); logger.log = function (message) { helper.log( "【weinre】-" + message); }; weinre.run({ httpPort: inspect, boundHost: '-all-', verbose: false, debug: false, readTimeout: 20, deathTimeout: 50 }); } if(options.reload){ options.server = server; app.use( livereload (options)) } if (options.allowCORS) { // Allow Cross Origin Resource Sharing // https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS app.use(function (req, res, next) { res.setHeader("Access-Control-Allow-Origin", "*"); return next(); }); } if(options.rules){ app.use( rewrite( options ) ); } app.use( folder( options ) ); app.use( express.static( options.dir ) ); app.use(function(err, req, res, next) { helper.log(err.message || err, 'error'); res.status(500).send('Something is broken!'); }); server.on('error', function (e) { // if listen port is in using if (e.code == 'EADDRINUSE') { // server.close(); helper.log('port ' + chalk.bold(options.port)+ ' is in use, retrying port ... ' + chalk.bold("" + (++options.port) ), 'warn'); setTimeout( start, 1000); }else{ helper.log(e.message, 'error'); } }); server.on('listening', function(){ var url = 'http://localhost:' + options.port; helper.log("puer successfully started at " + chalk.underline.magenta.bold( url ), 'success') if(options.launch) helper.openBrowser( url ); }) var tries = 1; function start(){ if( tries++ >= 10 ) { helper.log("Too many attempts, please try other ports", 'error') return process.exit( 0 ); } server.listen( options.port ); } start(); }
d.run(function () { var weinreServer = weinre.run({ httpPort: port, boundHost: '-all-', verbose: false, debug: false, readTimeout: 5, deathTimeout: 15 }); weinreServer.on('listening', function () { fs.readFile(path.resolve(__dirname, '../../template/inject.js.template.html'), 'utf8', function (err, tpl) { if (err) { return console.log(err); } var injectScriptTag = htmlUtil.createScriptTag(tpl, showIframe, config.SPY_WEINRE_DOMAIN); spyProxy.createProxy({ port: spyProxyPort, injectScriptTag: injectScriptTag, weinrePort: port, autoDetectBrowser: autoDetectBrowser, externalProxy: externalProxy, cache: cache, successCB: function successCB(externalProxyPorts) { if (!externalProxy) { var webPort = externalProxyPorts.webPort; var guiServer = new http.Server(); guiServer.listen(function () { var guiPort = guiServer.address().port; if (process.platform === 'win32' || process.platform === 'win64') { child_process.exec('start http://127.0.0.1:' + guiPort); console.log(colors.green('浏览器打开 ---> http://127.0.0.1:' + guiPort)); } else { child_process.exec('open http://127.0.0.1:' + guiPort); console.log(colors.green('浏览器打开 ---> http://127.0.0.1:' + guiPort)); } }); guiServer.on('error', function (e) { console.log(e); }); var fp = path.join(__dirname, '../../template/wrap.html'); var fileTemp = fs.readFileSync(fp).toString(); var fileString = _.template(fileTemp)({ weinreUrl: 'http://127.0.0.1:' + port + '/client', anyProxyUrl: 'http://127.0.0.1:' + webPort }); guiServer.on('request', function (req, res) { res.setHeader('Content-Type', 'text/html;charset=utf-8'); res.end(fileString); }); } else { // auto open debugger page if (process.platform === 'win32' || process.platform === 'win64') { child_process.exec('start http://127.0.0.1:' + port + '/client'); console.log(colors.green('浏览器打开 ---> http://127.0.0.1:' + port + '/client')); } else { child_process.exec('open http://127.0.0.1:' + port + '/client'); console.log(colors.green('浏览器打开 ---> http://127.0.0.1:' + port + '/client')); } } } }); }); weinreServer.on('error', function (e) { console.error(e); }); }); });