0

我有一些 JS 文件,我想在提供它们之前对其进行修改。

它们是用参数调用的,我希望该参数在提供时位于文件中。

例子:

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

我的javascript.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 })
  })
4

1 回答 1

1

reply.view我猜,你试图使用观点插件。这样做的问题是您需要使用它设置一个视图引擎来提供 html。如果这是您的目标,您可以将参数传递给 html 模板。请参阅链接仓库中的示例。

如果您的目标是即时提供并生成文件,那么您可以使用模板文字来实现它。send另请注意,设置reply.code后需要调用:

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')
})
于 2018-11-14T07:41:06.920 回答