@@ -39,7 +39,9 @@ var fs = require('fs');
3939var path = require ( 'path' ) ;
4040var exec = require ( 'child_process' ) . exec ;
4141var spawn = require ( 'child_process' ) . spawn ;
42+ var chalk = require ( 'chalk' ) ;
4243var prompt = require ( 'prompt' ) ;
44+ var semver = require ( 'semver' ) ;
4345
4446var CLI_MODULE_PATH = function ( ) {
4547 return path . resolve (
@@ -50,6 +52,15 @@ var CLI_MODULE_PATH = function() {
5052 ) ;
5153} ;
5254
55+ var REACT_NATIVE_PACKAGE_JSON_PATH = function ( ) {
56+ return path . resolve (
57+ process . cwd ( ) ,
58+ 'node_modules' ,
59+ 'react-native' ,
60+ 'package.json'
61+ ) ;
62+ } ;
63+
5364checkForVersionArgument ( ) ;
5465
5566var cli ;
@@ -185,6 +196,8 @@ function run(root, projectName) {
185196 process . exit ( 1 ) ;
186197 }
187198
199+ checkNodeVersion ( ) ;
200+
188201 var cli = require ( CLI_MODULE_PATH ( ) ) ;
189202 cli . init ( root , projectName ) ;
190203 } ) ;
@@ -203,6 +216,21 @@ function runVerbose(root, projectName) {
203216 } ) ;
204217}
205218
219+ function checkNodeVersion ( ) {
220+ var packageJson = require ( REACT_NATIVE_PACKAGE_JSON_PATH ( ) ) ;
221+ if ( ! packageJson . engines || ! packageJson . engines . node ) {
222+ return ;
223+ }
224+ if ( ! semver . satisfies ( process . version , packageJson . engines . node ) ) {
225+ console . error ( chalk . red (
226+ 'You are currently running Node %s but React Native requires %s. ' +
227+ 'Please use a supported version of Node.'
228+ ) ,
229+ process . version ,
230+ packageJson . engines . node ) ;
231+ }
232+ }
233+
206234function checkForVersionArgument ( ) {
207235 if ( process . argv . indexOf ( '-v' ) >= 0 || process . argv . indexOf ( '--version' ) >= 0 ) {
208236 var pjson = require ( './package.json' ) ;
0 commit comments