Обновление : Похоже, проблема возникла из-за protobuf. Я в порядке и с другим решением, которое помогает мне решить проблемы с Google protobuf. Эта проблема сводится к:
- Как интегрировать Google protobuf с Typescript / Javascript для браузера?
У меня есть вопрос ниже для будущей цели.
Мы переместили наше приложение с Javascript на Typescript для очевидных преимуществ ООП и т. Д.
Ранее вызывать прямую функцию JavaScript из HTML было так же просто, как:
<script>window.MyFunction()</script>
Теперь с Typescript все файлы объединены в один автоматически сгенерированный файл .js.
В этом отдельном файле отдельные коды каждого файла изолированы в System.register()
. Обычно это выглядит примерно так:
System.register("<filename>", ["<import_1>", ..., "<import_N>"],
function (exports_13, context_13) {
"use strict";
...
function MyFunction () { ... } // somewhere inside the external function
}
Короче говоря, все, что написано в файле .ts, упаковано в неназванную функцию после запуска компилятора tsc
.
Теперь я не знаю, как вызвать функцию, которая находится внутри другой функции, которая, в свою очередь, указана в System.register(...)
Вопрос : Каков правильный синтаксис для вызова такой функции извне из HTML-файла?
<script> ??? </script>
Обновление :
HTML пытается вызвать в теге body следующим образом:
<script>
System.import("Main").then( // Main.ts is one of the file
function (module)
{
throw 0; // Temporary, to see if we reach till here
module.main(); // "main()" is the function, which is the entry point
});
</script>
В своем коде я использую "browserify", чтобы использовать Google protobuf для JS. Ошибка возникает только для файлов, связанных с protobuf. Эти определения и исходные файлы представлены в форматах .d.ts и .js.
Ошибка примерно такая:
js: Uncaught (in promise) Error: Fetch error: 404 NOT FOUND
Instantiating http://localhost:50000/folder/external/Server_pb
Loading http://localhost:50000/folder/external/_External
Loading Main
Обратите внимание, что 50000 - это временный порт, а папка - это любая папка, в которой хранятся файлы .js. «Server_pb» - это созданный пользовательский файл protobuf.
Моя проблема может быть точно описана как эта ссылка .
Похожие: