The automatic Shooting Method does not suffer errors well. It seems to give up when poorly chosen initial conditions lead to an error. In this case, there is a lower limit on the initial condition for u'[-1], below which the solution develops a singularity. The It is very close to the actual solution, so the built-in shooting method inevitably runs into a singularity and fails in this case, so. Thus a manual approach mayseems to be usednecessary. We add an extrapolation handler that will cause FindRoot to increase the initial condition when this happens.
The automatic Shooting Method does not suffer errors well. In this case, there is a lower limit on the initial condition for u'[-1], below which the solution develops a singularity. The built-in shooting method fails in this case, so a manual approach may be used. We add an extrapolation handler that will cause FindRoot to increase the initial condition when this happens.
The automatic Shooting Method does not suffer errors well. It seems to give up when poorly chosen initial conditions lead to an error. In this case, there is a lower limit on the initial condition for u'[-1], below which the solution develops a singularity. It is very close to the actual solution, so the built-in shooting method inevitably runs into a singularity and fails. Thus a manual approach seems to be necessary. We add an extrapolation handler that will cause FindRoot to increase the initial condition when this happens.
The automatic Shooting Method does not suffer errors well. In this case, there is a lower limit on the initial condition for u'[-1], below which the solution develops a singularity. The built-in shooting method fails in this case, so a manual approach may be used. We add an extrapolation handler that will cause FindRoot to increase the initial condition when this happens.
Also, one cannot have boundary conditions u[-1] == 0 nor u[1] == 0, since in solving for u''[x2], the equation is divided by u[x2]. So I limited the input range on the sliders for the BCs.
Manipulate[ eq = 2 + 2 u'[x2]^2 + u[x2] u''[x2] == 0; ic = {u[-1] == ic0, u[1] == ic1}; With[{pen = 3/ic0^2}, (* slightly informed guess *) psol = ParametricNDSolveValue[ Flatten[{eq, {u[-1] == ic0, u'[-1] == p0}}], u, {x2, -1, 1}, {p0}, "ExtrapolationHandler" -> {p0 - pen &, "WarningMessage" -> False}] ]; Quiet[ usol = psol[p0] /. FindRoot[psol[p0][1] == ic1, {p0, 2/ic0^2, E/ic0^2}], (* starting values from inspection of psol *) ParametricNDSolveValue::ndsz]; Dynamic@Plot[usol[x2], {x2, -1, to}, Frame -> True, PlotRange -> {{-1, 1}, All}, PlotRangePadding -> Scaled[.02], ImagePadding -> 50, FrameLabel -> {{u[x2], None}, {x2, Style[Row[{"solution to ", 2 + 2 u'[x2]^2 + u[x2] u''[x2] == 0}], 12]}}, GridLines -> Automatic, GridLinesStyle -> Directive[LightGray, Thickness[.001]]], {{to, 1, "to?"}, 0, 1, .01, ImageSize -> Tiny, Appearance -> "Labeled"}, {{ic0, 1/10, "u(x20)"}, 0.001, 1, .01, ImageSize -> Tiny, Appearance -> "Labeled"}, {{ic1, 1/10, "u(x21)"}, 0.001, 1, .01, ImageSize -> Tiny, Appearance -> "Labeled"}] 
usol'[-1] (* p0 found by FindRoot for ic0 = 0.001 is approx E/ic0^2 *) (* 2.78641*10^6 *) Note how large the derivative is compared to the size of the solution. It might be hard to lower the limit on the slider for ic0, without increasing precision.