alphagov / govuk-prototype-kit

Rapidly create HTML prototypes of GOV.UK services
https://prototype-kit.service.gov.uk
MIT License
306 stars 236 forks source link

User on Windows is not able to run the kit due to not finding gulp #927

Closed hannalaakso closed 4 years ago

hannalaakso commented 4 years ago

What

A user who tried to run the kit on Windows and VS Code terminal got the following message on npm start (after successfully running npm install):

'node_modules/.bin/gulp' is not recognized as an internal or external command, operable program or batch file.
gulp exited with code 1

We tried

npm install -g gulp
npm install -g gulp-cli

Their version of node is 12.16.1.

Their version of Windows is 8.1, I'm wondering if that could be a factor.

Why

Users on Windows should be able to install the kit.

Apparently another user had this issue recently.

Further detail

This seems to be something to do with: https://github.com/alphagov/govuk-prototype-kit/blob/master/start.js#L71 and could be a permissions issue.

Cross-spawn says it should work with Windows and I also don't see any issues about this reported in their repo.

vanitabarrett commented 4 years ago

Tested on a Windows 8.1 64-bit VM: (tldr: couldn't replicate)

C:\Users\Vanita\Downloads\prototype-kit>node -v
v12.16.1

C:\Users\Vanita\Downloads\prototype-kit>npm -v
6.13.4

C:\Users\Vanita\Downloads\prototype-kit>git --version
git version 2.28.0.windows.1

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users\Vanita\Downloads\prototype-kit>npm install
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated mkdirp@0.3.5: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated request@2.88.0: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated request-promise@4.2.2: request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142

> node-sass@4.14.1 install C:\Users\Vanita\Downloads\prototype-kit\node_modules\node-sass
> node scripts/install.js

Cached binary found at C:\Users\Vanita\AppData\Roaming\npm-cache\node-sass\4.14.1\win32-x64-72_binding.node

> nodemon@2.0.4 postinstall C:\Users\Vanita\Downloads\prototype-kit\node_modules\nodemon
> node bin/postinstall || exit 0

> node-sass@4.14.1 postinstall C:\Users\Vanita\Downloads\prototype-kit\node_modules\node-sass
> node scripts/build.js

Binary found at C:\Users\Vanita\Downloads\prototype-kit\node_modules\node-sass\vendor\win32-x64-72\binding.node
Testing binary
Binary is fine
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules\glob-watcher\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

added 1472 packages from 784 contributors in 185.478s

47 packages are looking for funding
  run `npm fund` for details

C:\Users\Vanita\Downloads\prototype-kit>npm start

> govuk-prototype-kit@9.10.0 start C:\Users\Vanita\Downloads\prototype-kit
> node start.js

[02:39:44] Using gulpfile ~\Downloads\prototype-kit\gulpfile.js
[02:39:44] Starting 'default'...
[02:39:44] Starting 'generate-assets'...
[02:39:44] Starting 'clean'...
[02:39:44] Finished 'clean' after 64 ms
[02:39:44] Starting 'sass-extensions'...
[02:39:44] Finished 'sass-extensions' after 8.13 ms
[02:39:44] Starting 'sass'...
[02:39:44] Starting 'copy-assets'...
[02:39:44] Starting 'sass-documentation'...
[02:39:44] Starting 'copy-assets-documentation'...
[02:39:44] Starting 'sass-v6'...
[02:39:44] Starting 'copy-assets-v6'...
[02:39:44] Finished 'sass-v6' after 125 ms
[02:39:44] Finished 'copy-assets-v6' after 128 ms
[02:39:45] Finished 'copy-assets-documentation' after 658 ms
[02:39:45] Finished 'copy-assets' after 726 ms
[02:39:46] Finished 'sass-documentation' after 1.81 s
[02:39:47] Finished 'sass' after 2.55 s
[02:39:47] Finished 'generate-assets' after 2.63 s
[02:39:47] Starting 'watch'...
[02:39:47] Starting 'server'...
[02:39:47] Starting 'watch-sass'...
[02:39:47] Starting 'watch-assets'...
[02:39:47] Starting 'watch-sass-v6'...
[02:39:47] Starting 'watch-assets-v6'...
[02:39:47] [nodemon] 2.0.4
[02:39:47] [nodemon] to restart at any time, enter `rs`
[02:39:47] [nodemon] watching path(s): .env **\*.js **\*.json
[02:39:47] [nodemon] watching extensions: js,mjs,json
[02:39:47] [nodemon] starting `node listen-on-port.js`

GOV.UK Prototype Kit v9.10.0

NOTICE: the kit is for building prototypes, do not use it for production services.

Listening on port 3000   url: http://localhost:3000
vanitabarrett commented 4 years ago

Tested on a Windows 8.1 32-bit VM: (tldr: same as above, couldn't replicate)

C:\Users\Vanita\Downloads\prototype-kit>node -v
v12.16.1

C:\Users\Vanita\Downloads\prototype-kit>npm -v
6.13.4

C:\Users\Vanita\Downloads\prototype-kit>git --version
git version 2.28.0.windows.1

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users\Vanita\Downloads\prototype-kit>npm install
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated mkdirp@0.3.5: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated request@2.88.0: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated request-promise@4.2.2: request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142

> node-sass@4.14.1 install C:\Users\Vanita\Downloads\prototype-kit\node_modules\node-sass
> node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v4.14.1/win32-ia32-72_binding.node
Download complete..] - :
Binary saved to C:\Users\Vanita\Downloads\prototype-kit\node_modules\node-sass\vendor\win32-ia32-72\binding.node
Caching binary to C:\Users\Vanita\AppData\Roaming\npm-cache\node-sass\4.14.1\win32-ia32-72_binding.node

> nodemon@2.0.4 postinstall C:\Users\Vanita\Downloads\prototype-kit\node_modules\nodemon
> node bin/postinstall || exit 0

Love nodemon? You can now support the project via the open collective:
 > https://opencollective.com/nodemon/donate

> node-sass@4.14.1 postinstall C:\Users\Vanita\Downloads\prototype-kit\node_modules\node-sass
> node scripts/build.js

Binary found at C:\Users\Vanita\Downloads\prototype-kit\node_modules\node-sass\vendor\win32-ia32-72\binding.node
Testing binary
Binary is fine
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"ia32"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules\glob-watcher\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"ia32"})

added 1472 packages from 784 contributors in 233.376s

47 packages are looking for funding
  run `npm fund` for details

C:\Users\Vanita\Downloads\prototype-kit>npm start

> govuk-prototype-kit@9.10.0 start C:\Users\Vanita\Downloads\prototype-kit
> node start.js

? Help us improve the GOV.UK Prototype Kit
────────────────────────────────────────

With your permission, the kit can send useful anonymous usage data
for analysis to help the team improve the service. Read more here:
https://govuk-prototype-kit.herokuapp.com/docs/usage-data

Do you give permission for the kit to send anonymous usage data? Yes
[03:29:06] Using gulpfile ~\Downloads\prototype-kit\gulpfile.js
[03:29:06] Starting 'default'...
[03:29:06] Starting 'generate-assets'...
[03:29:06] Starting 'clean'...
[03:29:06] Finished 'clean' after 15 ms
[03:29:06] Starting 'sass-extensions'...
[03:29:06] Finished 'sass-extensions' after 21 ms
[03:29:06] Starting 'sass'...
[03:29:06] Starting 'copy-assets'...
[03:29:06] Starting 'sass-documentation'...
[03:29:06] Starting 'copy-assets-documentation'...
[03:29:06] Starting 'sass-v6'...
[03:29:06] Starting 'copy-assets-v6'...
[03:29:06] Finished 'sass-v6' after 55 ms
[03:29:06] Finished 'copy-assets-v6' after 65 ms
[03:29:07] Finished 'copy-assets-documentation' after 1.01 s
[03:29:07] Finished 'copy-assets' after 1.32 s
[03:29:08] Finished 'sass-documentation' after 1.54 s
[03:29:08] Finished 'sass' after 2.28 s
[03:29:08] Finished 'generate-assets' after 2.32 s
[03:29:08] Starting 'watch'...
[03:29:08] Starting 'server'...
[03:29:08] Starting 'watch-sass'...
[03:29:08] Starting 'watch-assets'...
[03:29:08] Starting 'watch-sass-v6'...
[03:29:08] Starting 'watch-assets-v6'...
[03:29:09] [nodemon] 2.0.4
[03:29:09] [nodemon] to restart at any time, enter `rs`
[03:29:09] [nodemon] watching path(s): .env **\*.js **\*.json
[03:29:09] [nodemon] watching extensions: js,mjs,json
[03:29:09] [nodemon] starting `node listen-on-port.js`

GOV.UK Prototype Kit v9.10.0

NOTICE: the kit is for building prototypes, do not use it for production services.

Listening on port 3000   url: http://localhost:3000
vanitabarrett commented 4 years ago

Also tested without installing Git - same outcome as above.

vanitabarrett commented 4 years ago

Reproduced issue with the specific prototype. Seems to be resolved by deleting node_modules and doing a clean install (tested on virtual machine). Have asked the user to try doing this on their machine to see if the problem is resolved.

36degrees commented 4 years ago

I wonder if the committed node_modules were created from running npm install on a non-Windows machine? It'd be interesting to compare the committed node_modules folder to the version you get after a clean install and see what the differences are.

edwardhorsford commented 4 years ago

It isn't uncommon for users to accidentally commit them, having lost their gitignore file. I wonder if the kit should warn if there isn't a .gitignore in place.

vanitabarrett commented 4 years ago

This has now been resolved for that user. I think I'm going to close this issue in favour of https://github.com/alphagov/govuk-prototype-kit/issues/935