首页 > 解决方案 > 节点无法在 Express/react 应用程序中查找视图“错误”

问题描述

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

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

我已经尝试了一切。删除/lib,重新安装所有...

错误:无法在 Function.render 的视图目录“/Users/vemundeldegard/all/server/lib/views”中查找视图“错误”(/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/快递/lib/路由器/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)

应用程序.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;

路径.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
};

在此处输入图像描述

标签: javascriptnode.jsreactjsexpress

解决方案


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

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


推荐阅读