【问题标题】:node js web app on AWS failed to lookup failed to lookup view "pages/home" in views directory "/var/app/views"AWS 上的节点 js Web 应用程序查找失败 在视图目录“/var/app/views”中查找视图“pages/home”失败
【发布时间】:2016-07-18 16:10:14
【问题描述】:

我正在尝试将我的简单节点 js Web 应用程序放在 AWS EB 上,但路径似乎有问题。我在我的机器上运行 Windows,它可以工作,但是当我在 EB 上部署它时,它给了我以下错误

Error: Failed to lookup view "pages/home" in views directory "/var/app/views"
   at EventEmitter.render (/var/app/current/node_modules/express/lib/application.js:579:17)
   at ServerResponse.render (/var/app/current/node_modules/express/lib/response.js:961:7)
   at null.<anonymous> (/var/app/current/controller/app.js:113:14)
   at tryCatcher (/var/app/current/node_modules/bluebird/js/release/util.js:16:23)
   at Promise.successAdapter [as _fulfillmentHandler0] (/var/app/current/node_modules/bluebird/js/release/nodeify.js:23:30)
   at Promise._settlePromise (/var/app/current/node_modules/bluebird/js/release/promise.js:557:21)
   at Promise._settlePromise0 (/var/app/current/node_modules/bluebird/js/release/promise.js:605:10)
   at Promise._settlePromises (/var/app/current/node_modules/bluebird/js/release/promise.js:684:18)
   at Async._drainQueue (/var/app/current/node_modules/bluebird/js/release/async.js:126:16)
   at Async._drainQueues (/var/app/current/node_modules/bluebird/js/release/async.js:136:10)
   at Immediate.Async.drainQueues [as _onImmediate] (/var/app/current/node_modules/bluebird/js/release/async.js:16:14)
   at processImmediate [as _immediateCallback] (timers.js:383:17) 

我的路径代码

var path = require('path');
var app = express();
app.use(express.static(path.resolve('../public')));

app.set('views',path.resolve('../views'));
app.set('view engine', 'ejs');

【问题讨论】:

  • 你有一些代码显示你是如何尝试加载视图的吗?
  • 添加了代码。谢谢

标签: javascript node.js amazon-web-services express amazon-elastic-beanstalk


【解决方案1】:

我假设您使用 path 模块来解析目录和文件名(以避免 Windows 和 linux 文件系统之间的差异问题)。

这可能是文件权限或所有权问题。检查运行节点进程的用户是否具有相关目录和文件的读取权限。

也可能是路径解析问题。您的应用似乎位于 /var/app/current/ 中,但您正尝试在 /var/app/views/ 中查找文件。如果您的应用是这样构造的,应该可以工作,但如果您打算在 /var/app/current/views/ 中查找文件,则会出现问题。

【讨论】:

  • 我在我的问题上添加了一些代码。我认为这与权限无关,因为我将其部署到 AWS EB。我在 Windows 上运行,它工作得非常好。
【解决方案2】:

我有类似的问题,我的问题是我忘记递归压缩根目录中的视图子目录,因此在部署到 AWS Elastic Beanstalk 时导致视图目录为空。因此,在打包代码时,您应该使用 zip -r example.zip . 之类的东西。

【讨论】:

    【解决方案3】:

    只关注区分大小写。确保在渲染上传递的文件名与服务器上的文件完全相同...

    例如。 res.render("Challenge",... 有一个视图文件名 challenge.hbs... 将失败 res.render("challenge",... 有一个视图文件名 challenge.hbs... 将通过

    【讨论】:

      猜你喜欢
      • 2019-08-30
      • 1970-01-01
      • 2016-08-05
      • 1970-01-01
      • 2015-09-10
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      相关资源
      最近更新 更多