将javascript应用程序部署到heroku后,脚本无法运行

时间:2017-07-13 15:03:08

标签: javascript html node.js animation heroku

我用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部分,工作正常。为什么呢?

1 个答案:

答案 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按钮:

这是为这个答案创建的一个例子:

您可以在其中找到有关其编写原因的详细信息。