gpt4 book ai didi

node.js - Heroku 无法为 Cappuccino 应用程序 (Nodejs) 加载资源

转载 作者:行者123 更新时间:2023-12-03 13:38:22 26 4
gpt4 key购买 nike

Node.js 网络服务器:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var routes = require('./routes/index');

var app = express();

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

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static('public'));

app.use('/', routes);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});


app.get('/Volunteer', function(req, res) {
res.sendFile(path.join(__dirname + '/Volunteer/index.html'));
});



// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});

module.exports = app;

当我部署到 Heroku 时,它启动得很好。我可以正常查看主页。

如果我导航到 Cappuccino 网络应用程序的地址,它会加载标准的“加载”,但不会进一步。

错误控制台打印:
Failed to load resource: the server responded with a status of 404 (Not Found)
https://myApp.herokuapp.com/Volunteer/Frameworks/Objective-J/Objective-J.js

服务器和应用程序在本地运行良好,只是不在 Heroku 上。我什至不知道如何从这里开始。我在 Stack Overflow 和 Google 上搜索过类似的问题,但结果却是空手而归。

这是 Cappuccino 应用程序的 HTML:
<!DOCTYPE html>
<html lang="en">
<!--
index.html
VolunteerSignUp

Created by You on July 14, 2016.
Copyright 2016, Your Company All rights reserved.
-->
<head>
<meta charset="utf-8">

<!--[if lte IE 8]>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1">
<![endif]-->
<!--[if gte IE 9]>
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
<![endif]-->

<meta name="viewport" content="initial-scale=1.0, user-scalable=no">

<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">

<link rel="apple-touch-icon" href="Resources/icon.png">
<link rel="apple-touch-startup-image" href="Resources/default.png">

<title>VolunteerSignUp</title>

<!-- Custom javascript goes here -->
<!-- End custom javascript -->

<script type="text/javascript">
OBJJ_MAIN_FILE = "main.j";
// The below will tell the compiler to not generate debug symbols but will generate type signatures and inline objj_msgSend functions.
// This will affect only Objective-J code that is compiled when loading the application. It will not affect precompiled
// code like the Cappuccino frameworks.
// Uncomment or comment on the line below to change the flags
OBJJ_COMPILER_FLAGS = [/*"IncludeDebugSymbols"*/, "IncludeTypeSignatures", "InlineMsgSend"];

var progressBar = null;

OBJJ_PROGRESS_CALLBACK = function(percent, appSize, path)
{
percent = percent * 100;

if (!progressBar)
progressBar = document.getElementById("progress-bar");

if (progressBar)
progressBar.style.width = Math.min(percent, 100) + "%";
}

var loadingHTML =
'<div id="loading">' +
' <div id="loading-text">Loading...</div>' +
' <div id="progress-indicator">' +
' <span id="progress-bar" style="width:0%"></span>' +
' </div>' +
'</div>';
</script>

<script type="text/javascript" src="Frameworks/Objective-J/Objective-J.js" charset="UTF-8"></script>

<style type="text/css">
html, body, h1, p {
margin: 0;
padding: 0;
}

/* We need a body wrapper because Cappuccino is unhappy if we change the body element */
#cappuccino-body {
/* Position it absolutely so it will fill the height without content */
position: absolute;
top: 0;
bottom: 0;
width: 100%;

/* Put it at the bottom of the stack so it doesn't interfere with UI */
z-index: 0;
}

#cappuccino-body .container {
display: table;
margin: 0 auto;
height: 100%;
}

#cappuccino-body .content {
display: table-cell;
height: 100%;
vertical-align: top;
}

#loading {
position: relative;
top: 35%;
}

#loading-text {
height: 1.5em;
color: #555;
font: normal bold 36px/36px Arial, sans-serif;
}

#progress-indicator {
padding: 0px;
height: 16px;
border: 5px solid #555;
border-radius: 18px;
background-color: white;
}

#progress-bar {
position: relative;
top: -1px;
left: -1px;
display: block;
height: 18px;

/* Compensate for moving the bar left 1px to overlap the indicator border */
border-right: 1px solid #555;
background-color: #555;
}

#noscript {
position: relative;
top: 35%;
padding: 1em 1.5em;
border: 5px solid #555;
border-radius: 16px;
background-color: white;
color: #555;
text-align: center;
font: bold 24px Arial, sans-serif;
}

#noscript a {
color: #98c0ff;
text-decoration: none;
}
</style>
</head>

<body>
<div id="cappuccino-body">
<div class="container">
<div class="content">
<script type="text/javascript">
document.write(loadingHTML);
</script>
</div>
</div>
<noscript style="position:absolute; top:0; left:0; width:100%; height:100%">
<div class="container">
<div class="content">
<div id="noscript">
<p style="font-size:120%; margin-bottom:.75em">JavaScript is required for this site.</p>
<p><a href="http://www.enable-javascript.com" target="_blank">Enable JavaScript</a></p>
</div>
</div>
</div>
</noscript>
</div>
</body>
</html>

编辑***
我将同一个项目上传到另一个网络托管服务并遇到了同样的问题。我还可以提供哪些其他信息来帮助诊断问题?

最佳答案

这是我的错。我以符号链接(symbolic link)的形式 checkin 了 Objective-J 和其他框架目录。在运行应用程序并推送到 Heroku 之前,我未能在控制台中运行 jake deploy。

现在在两种环境中都能正常运行。

关于node.js - Heroku 无法为 Cappuccino 应用程序 (Nodejs) 加载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38405521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com