Почему может произойти сбой команды parcel при запуске из сценария оболочки npm, а не при непосредственном запуске? - PullRequest
0 голосов
/ 29 июня 2019

У меня есть следующий prod скрипт, который я использовал ранее в другом, очень похожем проекте:

#!/usr/bin/env sh

GCC=$(npm bin)/google-closure-compiler

preGccBuildSteps () {
  rimraf prod dist && mkdir prod && ln -sfn ../../css prod/css && \
    spago build && spago bundle-module --main Metajelo.UI --to prod/index.prod.js && \
    cp static/index.* prod/
}


preGccBuildSteps || { echo 'preGccBuildSteps failed' ; exit 1; }
"$GCC" --js prod/index.prod.js --js_output_file prod/index.opt.js && \
  echo $(pwd) && \
  parcel build --public-url ./ prod/index.html

echo $(pwd) - недавнее дополнение, чтобы подтвердить, что я в здравом уме, нок сожалению, он печатает ожидаемый каталог, когда я запускаю его, используя npm run prod, и я получаю сообщение об ошибке, которое кажется не очень полезным:

/wd/app
[Error: ENOENT: no such file or directory, scandir 'build'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'scandir',
  path: 'build'
}
/wd/node_modules/parcel-luxe/lib/parser.js:44
    files.forEach(function (file) {
          ^

TypeError: Cannot read property 'forEach' of undefined
    at /wd/node_modules/parcel-luxe/lib/parser.js:44:11
    at /wd/node_modules/parcel-luxe/lib/reader.js:9:14
    at FSReqCallback.oncomplete (fs.js:136:23)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! purescript-metajelo-ui@ prod: `../scripts/prod`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the purescript-metajelo-ui@ prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/brandon/.npm/_logs/2019-06-29T20_34_37_583Z-debug.log

Обратите внимание, что /wd/app - это ожидаемый результат pwd.

Хорошо, ясно, что проблема должна быть связана с последней командой, parcel build --public-url ./ prod/index.html.

Но когда я запускаю это непосредственно в терминале, даже сразу после ошибки с npm run prod, я на самом деле получаю успех:

brandon@4747aec8d9e1:/wd/app$ parcel build --public-url ./ prod/index.html
✨  Built in 6.10s.

dist/prod.0a64bfcf.js.map     547.15 KB    107ms
dist/prod.0a64bfcf.js          253.9 KB    5.56s
dist/index.html                 5.01 KB    375ms
dist/prod.74dcbc56.css.map      4.46 KB      5ms
dist/icomoon.0cf994d0.svg       3.53 KB     40ms
dist/icomoon.6cd840b1.eot       1.95 KB     40ms
dist/icomoon.a7482a13.woff      1.86 KB     39ms
dist/prod.74dcbc56.css          1.82 KB    5.50s
dist/icomoon.712d3017.ttf       1.79 KB     39ms

Так почему же происходит сбой при запуске из npm run prod

1 Ответ

0 голосов
/ 30 июня 2019

Не очень удовлетворительный ответ, но теперь я понимаю, что случайно выбрал npm install за пределы контейнера.Тем не менее, node_modules были установлены в том же месте, но очевидно, что это имело значение другим способом.После rm -fr node_modules && npm install внутри контейнера все снова работает.

...