Команда веб-сборки emrun: команда не найдена при запуске из пакетного сценария, но она прекрасно работает в окне команд - PullRequest
2 голосов
/ 02 октября 2019

Мне удалось собрать и запустить приветственную программу Web Assembly, используя Windows Subsystem для Linux (Ubuntu). По существу, следуя начальной странице, найденной здесь: https://webassembly.org/getting-started/developers-guide/

Я успешно запустил программу с этой командой:

emrun --browser "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" --verbose --port 8081 hello.html

Все хорошо, когда я запускаю это в командной строке,но когда я создал скрипт с именем start.sh, который выглядит следующим образом:

#!/usr/bin/env bash
echo "Starting hello world in chrome."
emrun --browser "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" --verbose --port 8081 hello.html

, я получаю сообщение об ошибке, упоминаемое в заголовке "emrun: commnand not found".

Первая строка "#! / usr / bin / env bash "был скопирован из одного из файлов .sh в Wasm SDK, так что я думаю, что так? Я также пытался добавить Wasm SDK в $ PATH, используя менеджер редактирования переменных среды Windows 10, но безуспешно.

У меня нет большого опыта работы с пакетными сценариями, и я не уверен, как поступитьотсюда .. Я чувствую, что мне не хватает чего-то очевидного, но я просто не могу понять, в чем разница между консолью и файлом скрипта?

Спасибо, что нашли время, чтобы прочитать это.

1 Ответ

0 голосов
/ 03 октября 2019

Сам нашел ответ после еще одного удара головой! Благодаря всем мемам, которые я видел, я на самом деле поделюсь с вами ответом.

Я отредактировал скрипт так, что он выглядит так:

#!/usr/bin/env bash
cd ..
cd Wasm/emsdk
source ./emsdk_env.sh --build=Release
cd ..
cd ..
cd hello
emcc hello.c -o hello.html
echo "Starting hello world in chrome."
emrun --browser "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" --verbose --port 8081 hello.html

Running "$ sudo bash start.sh "теперь выводит на консоль следующее сообщение:

Adding directories to PATH:
PATH += /home/elaurora/Wasm/emsdk
PATH += /home/elaurora/Wasm/emsdk/fastcomp/emscripten
PATH += /home/elaurora/Wasm/emsdk/node/12.9.1_64bit/bin

Setting environment variables:
EMSDK = /home/elaurora/Wasm/emsdk
EM_CONFIG = /home/elaurora/.emscripten
EMSDK_NODE = /home/elaurora/Wasm/emsdk/node/12.9.1_64bit/bin/node

Starting hello world in chrome.
... then a bunch of unrelated stuff regarding the server that was just started

Конечно, чтобы это работало на вас, вам придется отредактировать каждый из путей так, чтобы строка

source ./emsdk_env.sh --build=Release

запускается в папке emsdk.

Вероятно, есть лучший способ сделать это, возможно, способ, предусматривающий постоянную установку правильных переменных PATH, чтобы иметь вышеуказанные значения, но, к сожалению, я не уверен, какидти об этом. Тем не менее, это решение работает для меня.

...