节点无法在 Express/react 应用程序中查找视图“错误”

Posted

技术标签:

【中文标题】节点无法在 Express/react 应用程序中查找视图“错误”【英文标题】:Node failed to lookup view "error" in Express/react app 【发布时间】:2019-07-14 05:00:44 【问题描述】:

我正在开发我的应用程序,它在几个小时前就开始工作了。但是现在当我启动它时,我收到以下错误。

/lib 中没有/views 目录,但我的src/ 中有。它包含error.jade.

我什么都试过了。删除/lib,重新安装一切...

错误:无法在视图目录中查找视图“错误” “/Users/vemundeldegard/all/server/lib/views” 在 Function.render (/Users/vemundeldegard/all/server/node_modules/express/lib/application.js:580:17) 在 ServerResponse.render (/Users/vemundeldegard/all/server/node_modules/express/lib/response.js:1008:7) 在 /Users/vemundeldegard/all/server/lib/app.js:47:7 在 Layer.handle_error (/Users/vemundeldegard/all/server/node_modules/express/lib/router/layer.js:71:5) 在 trim_prefix (/Users/vemundeldegard/all/server/node_modules/express/lib/router/index.js:315:13) 在 /Users/vemundeldegard/all/server/node_modules/express/lib/router/index.js:284:7 在 Function.process_params (/Users/vemundeldegard/all/server/node_modules/express/lib/router/index.js:335:12) 在下一个(/Users/vemundeldegard/all/server/node_modules/express/lib/router/index.js:275:10) 在 Layer.handle_error (/Users/vemundeldegard/all/server/node_modules/express/lib/router/layer.js:67:12) 在 trim_prefix (/Users/vemundeldegard/all/server/node_modules/express/lib/router/index.js:315:13)

App.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var  BUILD_DIR, PUBLIC_DIR  = require('./paths');
var reactRenderer = require('./react-renderer');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded( extended: false ));
app.use(cookieParser());

app.get('/', reactRenderer);

app.use(express.static(BUILD_DIR));
app.use(express.static(PUBLIC_DIR));

// catch 404 and forward to error handler
app.use(function(req, res, next) 
  next(createError(404));
);

// error handler
app.use(function(err, req, res, next) 
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : ;

  // render the error page
  res.status(err.status || 500);
  res.render('error');
);

module.exports = app;

Paths.js:

"use strict";

var path = require('path');

var BUILD_DIR = path.join(__dirname, '..', '..', 'client', 'build');
var PUBLIC_DIR = path.join(__dirname, '..', '..', 'public');
module.exports = 
  BUILD_DIR: BUILD_DIR,
  PUBLIC_DIR: PUBLIC_DIR
;

【问题讨论】:

【参考方案1】:

(我会发表评论,但我没有足够的代表)

__dirname 的用法引起了我的注意——您是否可能无意中从不正确的目录(在本例中为 lib)运行您的应用程序?

【讨论】:

以上是关于节点无法在 Express/react 应用程序中查找视图“错误”的主要内容,如果未能解决你的问题,请参考以下文章

在heroku上部署Nodejs+Express+React+Webpack应用

Node.js - 在 Server.js 上执行 Node 命令(Express + React + Webpack)

AWS Cognito 可以在 EB 上的 Node/Express/React 应用程序中使用吗?

为啥 CORS 不能在我的 express/react 应用程序上运行?

如何使用节点 js 从后端 API 请求 apikey?

Node (Express) / React 应用程序仅在本地工作