XHR из внешнего js-файла вызывает сбой приложения - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть файл api.js, где я делаю пару XHR-эквестов.Я использовал его внутри сценария тега внутри .ejs файла, но он становился слишком тесным.Поэтому после того, как я переместил все на api.js, я больше не могу получить доступ к его данным.

Каждый раз, когда я пытаюсь потребовать его от моей app.js, происходит сбой моей программы. [nodemon] app crashed - waiting for file changes before starting... Я пытался поместить его в папку public и некоторые другие места, но это никогда не работает.

Должен ли я экспортировать данные из api.js, как если бы это была схема данных?Если так, то как бы я это сделал?(что-то вроде module.exports = mongoose.model("Data", dataSchema);? У меня нет моделей в api.js, это всего лишь пара запросов)

Файл .ejs, который должен использовать api.js, имеет маршруткак это:

app.get('/home', function(req, res){
    res.render('home', { moment: moment }); //home is an .ejs file
});

{ moment: moment } от момента.js., если я должен экспортировать api.js, как я могу использовать его на этом маршруте, так как я уже использую moment.js.Я думаю, что не могу просто сделать

res.render('home', { moment: moment }, {api: api});

Основной проблемой может быть сбой приложения, так как без решения этой проблемы я не смогу решить что-либо еще.

Любая помощьоценили.Спасибо!

1 Ответ

0 голосов
/ 03 декабря 2018

Я не уверен, сколько процесса вы понимаете, но ваш файл ejs является «шаблоном» - вы передаете ему «переменные» и «визуализируете» его, а затем экспресс отправляет файл html.После того, как он рендерится, «переменные» больше не будут доступны, если они не будут переданы в тег <script>, как вы, возможно, делаете.(Я не уверен, как вы используете moment --- или, может быть, вы используете только moment для рендеринга чего-либо на стороне сервера)

Вместо того, чтобы пытаться передать api, ваш HTML-файл можетиспользуйте тег script, который может ссылаться на другие файлы, например

<script src='/js/api.js'></script>

Но ваш сервер (через express.js) должен обслуживать этот файл.

Это обычная опция, и она должнаработа для вас.

Как правило, вы не «передаете» модуль или библиотеку в движок шаблонов, если вам не нужно что-то визуализировать.Но если вы хотите, вы также можете прочитать файл api.js в виде строки и «внедрить» его в тег сценария ... (Я обычно не вижу, как это делается так)

<script><%= api %></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...