首页 > 解决方案 > 在不配置验证器的情况下无法设置未编译的验证规则

问题描述

我已经下载了一个学习项目,所以它不是我的代码,但是当我想启动它时出现此错误。我尝试自己调试一点,但由于我是 Nodejs 新手,所以这里有问题......

Error: Cannot set uncompiled validation rules without configuring a validator

    at Object.module.exports.register (/home/antonp/Desktop/pizza-luvrs/routes/index.js:25:10)
    at startServer (/home/antonp/Desktop/pizza-luvrs/index.js:12:10)

这是完整项目的链接。Github 仓库

index.js

const Hapi = require('@hapi/hapi')

const plugins = require('./plugins')
const routes = require('./routes')

async function startServer () {
  const server = Hapi.Server({
    port: process.env.PORT || 3000
  })

  await plugins.register(server)
  routes.register(server)

  try {
    await server.start()
    console.log(`Server running at: ${server.info.uri}`)
  } catch (err) {
    console.error(`Server could not start. Error: ${err}`)
  }
}

process.on('unhandledRejection', err => {
  console.log(err)
  process.exit()
})

startServer()

标签: node.js

解决方案


您的问题是由于hapi 的变化。尝试在 Pizza-luvrs-master/routes/login.post.js 中更改以下代码

validate: {
  payload: {
    username: Joi.string().alphanum().min(3).max(30).required(),
    password: Joi.string().min(3).max(30).required()
  }
}

validate: {
  query:Joi.object({
    username: Joi.string().alphanum().min(3).max(30).required(),
    password: Joi.string().min(3).max(30).required()
  })
}

推荐阅读