Как заменить переменную Javascript перед обслуживанием с помощью fastify? - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть несколько JS-файлов, которые я хотел бы изменить перед их обработкой.

Они вызываются с параметром, и я хочу, чтобы этот параметр находился в файле при обслуживании.

Пример:

<script src="myjavascript.js?key=mykey"></script

myjavascript.js

var key = ${key} // <-- replaced with request.query.key
console.log(key)

Маршрут:

fastify.get('/include.js', async (request, reply) => {
    let key
    if (request.query.key) {
      key = request.query.key
    }
    if (!key.length == 20) reply.code(400)

    reply.view('server/assets/include.js', { key: key })
  })

1 Ответ

0 голосов
/ 14 ноября 2018

Из reply.view Я предполагаю, что вы пытаетесь использовать плагин point-of-view .Проблема в том, что вам нужно настроить движок представления, который будет обслуживать html.Вы можете передавать параметры в HTML-шаблоны, если это ваша цель.Пожалуйста, смотрите примеры в связанном репо.

Если ваша цель - обслуживать и создавать файл на лету, то вы можете достичь этого с помощью литералов шаблона.Также обратите внимание, что вам нужно позвонить send после того, как вы установили код ответа.

const fastify = require('fastify')()

fastify
  .get('/', (request, reply) => {
    const { key } = request.query
    if (key.length !== 20) reply.code(404).send({ error: 'Not Found' })
    reply
      .type('application/javascript; charset=UTF-8')
      .send(`var key = ${key}; console.log(key);`)
  })

fastify.listen(3000, err => {
  if (err) throw err
  console.log('Server is listening on port 3000')
})
...