Итак, я пишу приложение с комбо узла / экспресс + Джейд.
У меня есть client.js
, что загружается на клиенте. В этом файле у меня есть код, который вызывает функции из других файлов JavaScript. Моя попытка была использовать
var m = require('./messages');
чтобы загрузить содержимое messages.js
(как я делаю на стороне сервера), а затем вызвать функции из этого файла. Тем require
не менее, это не определено на стороне клиента, и он выдает ошибку формы Uncaught ReferenceError: require is not defined
.
Эти другие файлы JS также загружаются во время выполнения на клиенте, потому что я размещаю ссылки в заголовке веб-страницы. Таким образом, клиент знает все функции, которые экспортируются из этих других файлов.
Как я вызываю эти функции из этих других файлов JS (таких как messages.js
) в главном client.js
файле, который открывает сокет для сервера?
<script src="messages.js"></script>
позвонить им после этого?--require
опция browserifyrequire()
требует определения на стороне клиента. Смотрите: lincolnloop.com/blog/speedy-browserifying-multiple-bundlesОтветы:
Это потому,
require()
что не существует в браузере / клиентском JavaScript.Теперь вам нужно будет сделать выбор в отношении управления сценариями JavaScript на стороне клиента.
У вас есть три варианта:
<script>
тег.CommonJS клиентская реализация включает в себя:
(большинству из них требуется шаг сборки перед развертыванием)
Вы можете прочитать больше о моем сравнении компонента Browserify с устаревшим компонентом .
Реализации AMD включают в себя:
Обратите внимание, что в своем поиске выбора того, с кем вам следует пойти, вы узнаете о Bower . Bower предназначен только для зависимостей пакетов и не определен в определениях модулей, таких как CommonJS и AMD.
Надеюсь, это поможет некоторым.
источник
<script>
тега для импорта класса React без использования менеджера пакетов nodeJs?Я из электронной среды, где мне нужно IPC-соединение между процессом рендеринга и основным процессом. Процесс рендеринга располагается в файле HTML между тегами скрипта и генерирует ту же ошибку. Линия
выдает Uncaught ReferenceError: требование не определено
Я смог обойти эту проблему, указав для интеграции узла значение true, когда окно браузера (в которое встроен этот HTML-файл) было изначально создано в основном процессе.
Это решило проблему для меня. Решение было предложено здесь . Надеется, что это помогает кому-то еще. Приветствия.
источник
ES6: В html включить основной файл js, используя атрибут
type="module"
( поддержка браузера ):И в
script.js
файле включить еще один файл, как это:Внутри включенного файла (
module.js
) вы должны экспортировать функцию / класс, который вы импортируетеРабочий пример здесь .
источник
val
объект окнаwindow.val = val
. Вот плункер: Плункер: plnkr.co/edit/aDyjyMxO1PdNaFh7ctBT?p=preview - это решение работаетВ моем случае я использовал другое решение.
Поскольку проект не требует CommonJs и должен иметь совместимость с ES3 (модули не поддерживаются), все, что вам нужно, это просто удалить все операторы экспорта и импорта из вашего кода , потому что ваш tsconfig не содержит
Но используйте операторы импорта и экспорта в ваших ссылочных файлах
Окончательно сгенерированный код всегда будет иметь (по крайней мере для машинописного текста 3.0) такие строки
источник
Даже использование этого не будет работать, я думаю, что лучшее решение - browserify:
источник
Это сработало для меня
<script data-main="your-Scrpt.js" src="require.js"></script>
примечание!
используйте: -> require (['moudle-name']) в "your-script.js"
не требуется ('имя-имя')const {ipcRenderer} = требуется ([электрон)]
Не: const {ipcRenderer} = требуется (электрон)
источник