【问题标题】:Failed to lookup view ".." in views directory "views"?在视图目录“views”中查找视图“..”失败?
【发布时间】:2021-04-06 18:13:29
【问题描述】:

你好,这是我的nodejs代码,vs中的服务器正在工作,但他看不到hh文件并在浏览器中获取表单

 const express= require('express')
 const app = express()
 const path =  require('path')
 const bodyParser = require('body-parser')
 const MongoClient = require('mongodb').MongoClient
 app.set('view engine', 'ejs')
 app.engine('ejs', require('ejs').__express);
 app.set('views','views')
 app.get('/', (req,res,next)=>{
     res.render('../views/hh')
 })
 app.post('/',(req,res,next)=>{
     MongoClient.connect('mongodb://localhost:27017/firstdb',(err,client)=>{
         const db = client.db()
         db.collection('users').insertOne({
             name: req.body.name,
             age:+req.body.age
         })
         client.close()
     })
 })
 app.listen(3000, ()=>{
     console.log('hi')
 })

【问题讨论】:

  • 你试过像res.render('hh')这样简单的hh吗?这假定 hh.ejs 文件相对于您发布的代码位于 ./views/hh.ejs 中。
  • 是的,我试过了,但没用
  • 你能展示你的项目文件夹结构吗?
  • 我已经添加了我的项目文件夹照片,package.json 也在同一个文件夹中
  • 如果您的代码在crud1.js 文件中,则将其移出到D:/crud1.js,它应该可以工作。或者尝试将视图路径设置为空字符串,如app.set('views','')

标签: node.js forms view directory connection


【解决方案1】:

更新

默认情况下ejs 模板引擎将查找您的views 目录。

所以,更改您的代码:从 res.render('../views/hh')res.render('hh')

完整代码:

 const express= require('express')
 const app = express()
 const path =  require('path')
 const bodyParser = require('body-parser')
 const MongoClient = require('mongodb').MongoClient

 app.set('view engine', 'ejs')

 app.get('/', (req,res,next)=>{
     res.render('hh')
 })
 app.post('/',(req,res,next)=>{
     MongoClient.connect('mongodb://localhost:27017/firstdb',(err,client)=>{
         const db = client.db()
         db.collection('users').insertOne({
             name: req.body.name,
             age:+req.body.age
         })
         client.close()
     })
 })
 app.listen(3000, ()=>{
     console.log('hi')
 })

注意:查看示例项目结构。

您的应用程序入口点,即app.jsmain.jsserver.js 或您喜欢的文件和视图文件夹都在同一路径中的任何名称?

你的项目结构应该是(根据你最新的项目结构):

test-node-js-app
  - node_modules
  - views
     - hh.ejs
  - cr.js
  - packages.json
  - packages-lock.json

【讨论】:

  • 你确定页面在views目录下吗?
  • 我已经更新了我的答案。 app.set('view engine', 'ejs')看看那里。
  • 嗨,我已经复制了您的代码,但浏览器显示找不到模块“ejs”
  • 运行到终端npm i ejs。在此之后运行您的应用程序。最后确保项目结构是我描述的方式(似乎crud.js 是您的应用程序的入口点。将其移至文件夹外)。
  • 好的,我在终端中运行它并给了我这个错误 npm WARN enoent ENOENT: no such file or directory, open 'D:\views\package.json' npm WARN views No description npm WARN views没有存储库字段。 npm WARN 视图没有 README 数据 npm WARN 视图没有许可证字段。
猜你喜欢
  • 2019-08-30
  • 2016-08-05
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 2016-01-27
  • 2015-09-10
相关资源
最近更新 更多