Closed
Bug 1351907
Opened 8 years ago
Closed 7 years ago
| yarn run start | fails on Windows
Categories
(Tree Management :: Treeherder, defect)
Tree Management
Treeherder
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: KWierso, Assigned: emorley)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
$ yarn run start
yarn run v0.21.3
$ ./node_modules/neutrino/bin/neutrino start --presets ./neutrino-custom/development.js
'.\node_modules\neutrino\bin\neutrino' is not recognized as an internal or external command,
operable program or batch file.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
16:29:22 <&emorley|pto> you need to yarn install
16:29:33 <&emorley|pto> either outside the VM or by running vagrant provision
16:29:59 <&emorley|pto> if you had a node_modules directory from ages ago, you might need to remove that in case it has cruft in it
16:30:16 <KWierso> this is on a machine brand new as of yesterday
16:30:34 <KWierso> after doing | yarn install --no-bin-links |
16:34:49 <KWierso> neutrino is definitely in node_modules/
16:37:23 — KWierso git checkout's an older commit before the switch to neutrino
16:39:11 <&emorley|pto> so I think the issue is that Windows doesn't understand files with a shebang line
16:44:55 <&emorley|pto> npm/yarn normally create a .cmd file, but if populated via vagrant provision that's not going to happen
16:45:19 <&emorley|pto> the workaround is to prefix the script commands in package.json with "node "
16:45:38 <&emorley|pto> or to run the command from within the VM
16:46:44 <&emorley|pto> could you file a bug?
16:50:07 <&emorley|pto> https://shapeshed.com/writing-cross-platform-node/#scripts-in-package-json
Reporter | ||
Comment 1•8 years ago
|
||
FWIW, Treeherder's UI runs via yarn just fine in the Win10 Bash on Windows shell (with the recently released update to Win10), so this isn't blocking me or making me use a VM. :)
Assignee | ||
Comment 2•8 years ago
|
||
Ah good to hear.
I had a partial fix for this a few days ago (prefixing all the commands with "node "), however I discovered the commands containing environment variables don't work on Windows either, since it needs them to be of form `set FOO=bar node ...` not `FOO=bar node ...`.
One possible solution for this is a package called cross-env, however it turns out that with webpack 2 even the author recommends using the new webpack 2 `--env.foo=bar` options rather than environment variables. However Neutruino doesn't support this yet, so I've filed:
https://github.com/mozilla-neutrino/neutrino-dev/issues/165
See also discussion here (since it adds environment variables to more commands, so would otherwise break more of them on Windows):
https://github.com/mozilla/treeherder/pull/2309#pullrequestreview-30523134
Assignee | ||
Updated•8 years ago
|
Assignee: nobody → emorley
Assignee | ||
Comment 3•7 years ago
|
||
The new Neutrino v6 --options.env feature (https://neutrino.js.org/cli/#-options) will mean we can make package.json Windows-compatible without having to use cross-env or similar.
Depends on: 1364894
Comment 4•7 years ago
|
||
I am not able to run this on windows 10 with the bash shell:
jmaher@JMAHER-WIN10:~/home/treeherder$ yarn install --no-bin-links
yarn install v0.27.5
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.90s.
jmaher@JMAHER-WIN10:~/home/treeherder$ yarn start
yarn start v0.27.5
$ ./node_modules/neutrino/bin/neutrino start --presets ./neutrino-custom/development.js
/mnt/c/Users/elvis/treeherder/node_modules/neutrino/bin/neutrino:53
run(args._[0], [...new Set(pkgPresets.concat(args.presets))]);
^^^
SyntaxError: Unexpected token ...
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:374:25)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:442:10)
at startup (node.js:136:18)
at node.js:966:3
error Command failed with exit code 1.
jmaher@JMAHER-WIN10:~/home/treeherder$
is it possible I have the wrong version of yarn, or node?
Flags: needinfo?(emorley)
Assignee | ||
Comment 5•7 years ago
|
||
What version of node is installed? Treeherder uses 7.10.0 currently (see package.json and .travis.yml).
Currently on Windows your best bet is to just use the Vagrant environment and run `yarn start` from there.
Flags: needinfo?(emorley)
Assignee | ||
Comment 6•7 years ago
|
||
s/best bet/solution with fewest hurdles/ (but I believe some people have got it working on Bash on Windows, so if you're fine with battling through, I'm happy to help :-))
Assignee | ||
Updated•7 years ago
|
Component: Treeherder → Treeherder: Docs & Development
Comment 7•7 years ago
|
||
Assignee | ||
Comment 8•7 years ago
|
||
Comment on attachment 8920873 [details] [review]
[treeherder] mozilla:node-windows > mozilla:master
This is another piece split out of the Neutrino work, to try and reduce the PR size there :-)
Attachment #8920873 -
Flags: review?(cdawson)
Updated•7 years ago
|
Attachment #8920873 -
Flags: review?(cdawson) → review+
Comment 9•7 years ago
|
||
Commit pushed to master at https://github.com/mozilla/treeherder
https://github.com/mozilla/treeherder/commit/2247a57d425339684f6be567aab55dd4422a01d7
Bug 1351907 - Improve yarn script Windows compatibility (#2863)
Typically the `package.json` commands call scripts that exist in the
top-level `node_modules/.bin/` directory, which are (a) already on
`PATH` when invoked by yarn, and (b) on Windows have `.cmd` script
shims that work around Windows' lack of shebang support.
However due to symlinks being problematic inside Virtualbox, we have
to use `--no-bin-links` with `yarn install`, which means the top-level
`.bin/` directory doesn't exist. As such, the `<package>/bin/` scripts
have to be used directly, which require prefixing with `node` to work
around lack of shebang support on Windows.
See:
https://shapeshed.com/writing-cross-platform-node/#scripts-in-package-json
Note that even with these changes, the `start:stage` command will not
work due to the environment variable prefix. This will be solved by
the switch to newer Neutrino, which supports setting environment
variables using the `--options` command line parameter instead.
Assignee | ||
Updated•7 years ago
|
Attachment #8920873 -
Flags: checkin+
Assignee | ||
Comment 10•7 years ago
|
||
This is mostly fixed, bug 1364894 will do the rest :-)
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Updated•3 years ago
|
Component: Treeherder: Docs & Development → TreeHerder
You need to log in
before you can comment on or make changes to this bug.
Description
•