如果用户尚未下载 react_app.js(第一次来),则使用 react 您需要在任何路由中提供包含 react_app.js 的 index.html。
然后你需要从 react_app.js 提供一些 api 调用,但是如果你对 GET 使用相同的 url,假设你会得到 API 调用响应,而不是带有 react_app.js 的 index.html。
解决这个问题的方法是什么?仅使用某些前缀进行 api 调用并仅在未找到路由时发送 index.html?
我的代码:
fastify.register(require('fastify-static'), {
root: path.join(__dirname, './static')
})
fastify.route({
method: 'GET',
url: '/',
handler: async (req, res) => {
res.send('you will get api call answer but you need to serve index.html with react_app.js first!!!!')
}
})
Run Code Online (Sandbox Code Playgroud) 从模块连接时,NestJS 类或功能中间件不会运行。它也不适用于单个路径、控制器或每个路径。从 main.ts 连接功能中间件工作正常。
//main.ts
import { ValidationPipe } from '@nestjs/common'
import { NestFactory } from '@nestjs/core'
import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify'
import { AppModule } from './app.module'
declare const module: any
async function bootstrap() {
const app = await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter())
app.useGlobalPipes(new ValidationPipe())
await app.listen(2100)
if (module.hot) {
module.hot.accept()
module.hot.dispose(() => app.close())
}
}
bootstrap()
Run Code Online (Sandbox Code Playgroud)
//app.module.ts
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'
import { AuthMiddleware } from './middleware/auth.middleware'
import { UserModule } from './user/user.module' …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 fastify 适配器使用 nestjs 上传多个文件。我可以按照此链接中的教程进行操作 -关于上传的文章
现在这使用 fastify-multipart 完成文件上传的工作,但我无法在上传之前使用请求验证,例如,这是我的规则文件模型(后来我想保存到 postgre)
import {IsUUID, Length, IsEnum, IsString, Matches, IsOptional} from "class-validator";
import { FileExtEnum } from "./enums/file-ext.enum";
import { Updatable } from "./updatable.model";
import {Expose, Type} from "class-transformer";
export class RuleFile {
@Expose()
@IsUUID("4", { always: true })
id: string;
@Expose()
@Length(2, 50, {
always: true,
each: true,
context: {
errorCode: "REQ-000",
message: `Filename shouldbe within 2 and can reach a max of 50 characters`,
},
})
fileNames: string[];
@Expose()
@IsEnum(FileExtEnum, …Run Code Online (Sandbox Code Playgroud) 我觉得Model-View-Controller @ docs.nestjs.com没有涵盖这个用例 - 有“动态模板渲染”部分 + Fastify,但两者组合在一起似乎效果不佳。
我尝试过以下片段:
import { Get, Res } from '@nestjs/common'
@Get()
index(@Res() res) {
if (isFoo()) {
return res.render('template1.html', {var1: 'foo'})
} else {
return res.render('template2.html', {var2: 'bar'})
}
}
Run Code Online (Sandbox Code Playgroud)
它失败了
类型错误:res.render 不是函数
有什么办法可以解决吗?
需要明确的是,我不使用的原因@Render是因为我需要该操作中的条件逻辑。
我正在设置一台新的 mac 开发机器,并安装了 node、npm 和 nvm。在单个项目目录中一切看起来都很好。但是,当尝试安装和使用时fastify-cli,我收到错误:
internal/modules/cjs/loader.js:892
throw err;
^
Error: Cannot find module 'node:process'
Require stack:
- /Users/a/.nvm/versions/node/v14.17.5/lib/node_modules/fastify-cli/node_modules/marked-terminal/index.cjs
- /Users/a/.nvm/versions/node/v14.17.5/lib/node_modules/fastify-cli/node_modules/blessed-contrib/lib/widget/markdown.js
- /Users/a/.nvm/versions/node/v14.17.5/lib/node_modules/fastify-cli/node_modules/blessed-contrib/index.js
- /Users/a/.nvm/versions/node/v14.17.5/lib/node_modules/fastify-cli/docs.js
- /Users/a/.nvm/versions/node/v14.17.5/lib/node_modules/fastify-cli/cli.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15)
at Function.Module._load (internal/modules/cjs/loader.js:745:27)
at Module.require (internal/modules/cjs/loader.js:961:19)
at require (internal/modules/cjs/helpers.js:92:18)
at Object.<anonymous> (/Users/a/.nvm/versions/node/v14.17.5/lib/node_modules/fastify-cli/node_modules/marked-terminal/index.cjs:3:17)
at Module._compile (internal/modules/cjs/loader.js:1072:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Module.require (internal/modules/cjs/loader.js:961:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/Users/a/.nvm/versions/node/v14.17.5/lib/node_modules/fastify-cli/node_modules/marked-terminal/index.cjs',
'/Users/a/.nvm/versions/node/v14.17.5/lib/node_modules/fastify-cli/node_modules/blessed-contrib/lib/widget/markdown.js',
'/Users/a/.nvm/versions/node/v14.17.5/lib/node_modules/fastify-cli/node_modules/blessed-contrib/index.js',
'/Users/a/.nvm/versions/node/v14.17.5/lib/node_modules/fastify-cli/docs.js',
'/Users/a/.nvm/versions/node/v14.17.5/lib/node_modules/fastify-cli/cli.js'
]
}
Run Code Online (Sandbox Code Playgroud)
重现步骤:
$ npm install --global fastify-cli(成功)$ fastify …索引.js
fastify.get("/paynow", (request, reply) => {
let data = {
TXN_AMOUNT: '10', // request amount
ORDER_ID: 'ORDER_123455', // any unique order id
CUST_ID: 'CUST_1238w4' // any unique customer id
}
// create Paytm Payment
paytm.createPayment(config, data, function (err, data) {
if (err) {
// handle err
}
//store the url and checksum
let url = data.url;
let checksum = data.checksum;
// delete it from data object
delete data.url;
delete data.checksum;
/* Prepare HTML Form and Submit to Paytm */
reply.type('text/html'); …Run Code Online (Sandbox Code Playgroud) fastify ×6
node.js ×4
nestjs ×3
javascript ×2
express ×1
file-upload ×1
node-modules ×1
npm ×1
paytm ×1
reactjs ×1
typescript ×1