如何在使用 fastify 服务之前替换 Javascript 变量?
How to replace Javascript variable before serving with fastify?
我有一些 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 })
})
从 reply.view
我猜,你试图使用 point-of-view 插件。这个问题是你需要用它来设置一个视图引擎,它将服务于 html。如果这是您的目标,您可以将参数传递给 html 模板。请参阅链接存储库中的示例。
如果您的目标是提供服务并即时生成文件,那么您可以使用模板文字来实现它。另请注意,您需要在设置 reply.code:
后调用 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')
})
我有一些 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 })
})
从 reply.view
我猜,你试图使用 point-of-view 插件。这个问题是你需要用它来设置一个视图引擎,它将服务于 html。如果这是您的目标,您可以将参数传递给 html 模板。请参阅链接存储库中的示例。
如果您的目标是提供服务并即时生成文件,那么您可以使用模板文字来实现它。另请注意,您需要在设置 reply.code:
后调用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')
})