将脚本部署到heroku后脚本无法运行

我创build了一个简单的JavaScript应用程序mojs,一个animation库,并希望将其部署到heroku。 首先,我尝试“heroku创build”等,并将原来的应用程序部署到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(); }); 

然后运行“npm install mojs”,和往常一样,

  git add . git commit -m "somedumbsh*t" git push heroku master 

但它没有播放它在我的本地主机上播放的animation。 日志显示没有错误。 其余部分,页面的HTML部分,工作正常。 为什么?

Heroku需要一些服务器,而不仅仅是客户端代码。

如果您无法启动您的应用程序:

 PORT=4446 npm start 

然后访问它:

  • HTTP://本地主机:4446 /

那么你将无法在Heroku上托pipe它。 (我假设你正在使用Node,如你的问题中的标签所示)。重要的是你的应用程序需要实际使用PORT环境variables中提供的端口号,而不仅仅是硬编码的端口号。

例如,如果您将所有静态文件(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上发布的一个完整解决scheme,即使有一个Deploy to Herokubutton:

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

  • 使用Express从/将数据写入本地主机

在那里你可以find更多关于为什么这样写的细节。