我用mojs创建了一个简单的javascript应用程序,一个动画库,并希望将它部署到heroku。首先,我试图" heroku创建"等,并将原始应用程序部署到heroku - 应用程序可访问,但脚本不起作用。其次,我尝试通过插入脚本引导程序标记来更改我在heroku网站上按照Node.js教程制作的应用程序
<script src="http://cdn.jsdelivr.net/mojs/latest/mo.min.js"></script>
<script src="myburstscript.js"></script>
将我制作的脚本复制到此应用的文件夹
var myBurst = new mojs.Burst({
count:10,
radius: {0 :150},
angle: {0 : 180},
children : {
//fill:{'red' : 'blue'},
fill: ['red', 'purple', 'blue', 'violet'],
duration : 1000,
radius: 10,
shape: 'polygon',
delay: 'stagger(50)'
}
});
document.addEventListener('click', function(e) {
myBurst.replay();
});
然后运行&#34; npm install mojs&#34;,和往常一样,
git add .
git commit -m "somedumbsh*t"
git push heroku master
但它没有播放它在我的localhost上播放的动画。日志显示没有错误。其余的,页面的HTML部分,工作正常。为什么呢?
答案 0 :(得分:1)
Heroku需要一些服务器,而不仅仅是客户端代码。
如果您无法启动应用程序:
PORT=4446 npm start
然后访问它:
然后你就无法在Heroku上主持它了。 (我假设您正在使用您的问题中的标记所指示的Node。)您的应用需要实际使用PORT
环境中提供的端口号,这一点非常重要变量,而不仅仅是硬编码的端口号。
例如,如果您将所有静态文件(HTML,客户端站点JavaScript,CSS,图像等)放在名为html
的目录中,那么您可以使用这样的简单服务器,例如:叫server.js
:
'use strict';
const path = require('path');
const express = require('express');
const app = express();
const port = process.env.PORT || 3338;
app.use('/', express.static(path.join(__dirname, 'html')));
app.listen(port, () => console.log(`Listening on http://localhost:${port}/`));
示例package.json
:
{
"name": "your-name",
"version": "0.0.0",
"description": "Your description",
"scripts": {
"start": "node server.js",
},
"author": "Your details",
"license": "MIT",
"dependencies": {
"express": "^4.15.2",
}
}
另请参阅我在GitHub上发布的一个完整解决方案的示例,该解决方案甚至包含Deploy to Heroku按钮:
这是为这个答案创建的一个例子:
您可以在其中找到有关其编写原因的详细信息。