From abbada47da375d87211473ef671cec03c5edfc7b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 4 Jun 2013 19:31:19 -0700 Subject: [PATCH] Put node directory in PATH when spawning This ensures the node used by the spawned process is the one bundled with Atom. This should prevent any "env: node: No such file or directory" errors when spawning a node bin script such as nak. Refs #514 --- src/stdlib/buffered-process.coffee | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/stdlib/buffered-process.coffee b/src/stdlib/buffered-process.coffee index eda128601..94c75137c 100644 --- a/src/stdlib/buffered-process.coffee +++ b/src/stdlib/buffered-process.coffee @@ -1,4 +1,6 @@ ChildProcess = require 'child_process' +path = require 'path' +_ = require 'underscore' module.exports = class BufferedProcess @@ -6,6 +8,8 @@ class BufferedProcess killed: false constructor: ({command, args, options, stdout, stderr, exit}={}) -> + options ?= {} + @addNodeDirectoryToPath(options) @process = ChildProcess.spawn(command, args, options) stdoutClosed = true @@ -36,6 +40,14 @@ class BufferedProcess processExited = true triggerExitCallback() + addNodeDirectoryToPath: (options) -> + options.env ?= process.env + pathSegments = [] + nodeDirectoryPath = path.resolve(process.execPath, '..', '..', '..', '..', 'Resources') + pathSegments.push(nodeDirectoryPath) + pathSegments.push(options.env.PATH) if options.env.PATH + options.env = _.extend({}, options.env, PATH: pathSegments.join(path.delimiter)) + bufferStream: (stream, onLines, onDone) -> stream.setEncoding('utf8') buffered = ''