Beispiel #1
0
port.on('message', (message) => {
  if (message.type === LOAD_SCRIPT) {
    const {
      filename,
      doEval,
      workerData,
      publicPort,
      manifestSrc,
      manifestURL,
      hasStdin
    } = message;

    setupTraceCategoryState();
    initializeReport();
    if (manifestSrc) {
      require('internal/process/policy').setup(manifestSrc, manifestURL);
    }
    initializeDeprecations();
    initializeFrozenIntrinsics();
    initializeESMLoader();
    loadPreloadModules();
    publicWorker.parentPort = publicPort;
    publicWorker.workerData = workerData;

    if (!hasStdin)
      process.stdin.push(null);

    debug(`[${threadId}] starts worker script ${filename} ` +
          `(eval = ${eval}) at cwd = ${process.cwd()}`);
    port.unref();
    port.postMessage({ type: UP_AND_RUNNING });
    if (doEval) {
      const { evalScript } = require('internal/process/execution');
      evalScript('[worker eval]', filename);
    } else {
      process.argv[1] = filename; // script filename
      require('module').runMain();
    }
    return;
  } else if (message.type === STDIO_PAYLOAD) {
    const { stream, chunk, encoding } = message;
    process[stream].push(chunk, encoding);
    return;
  } else if (message.type === STDIO_WANTS_MORE_DATA) {
    const { stream } = message;
    process[stream][kStdioWantsMoreDataCallback]();
    return;
  }

  require('assert').fail(`Unknown worker message type ${message.type}`);
});
Beispiel #2
0
const {
  initializeClusterIPC,
  initializePolicy,
  initializeESMLoader,
  loadPreloadModules
} = require('internal/bootstrap/pre_execution');

const {
  evalScript
} = require('internal/process/execution');

initializeClusterIPC();
initializePolicy();
initializeESMLoader();
loadPreloadModules();

const cliRepl = require('internal/repl');
cliRepl.createInternalRepl(process.env, (err, repl) => {
  if (err) {
    throw err;
  }
  repl.on('exit', () => {
    if (repl._flushing) {
      repl.pause();
      return repl.once('flushHistory', () => {
        process.exit();
      });
    }
    process.exit();
  });