【问题标题】:node - deploying app to heroku with gitnode - 使用 git 将应用程序部署到 heroku
【发布时间】:2017-12-24 01:19:13
【问题描述】:

我正在尝试将我的应用程序部署到heroku,但我不断收到此错误消息,说它“未能检测到应用程序匹配......”并且推送被拒绝。我按照 heroku 网站上所说的方式进行操作,但我一直停留在 git push heroku master 部分上,我尝试做一些研究,但找不到解决方案。

{
  "name": "home-automation",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server/server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.15.3",
    "johnny-five": "^0.11.3",
    "socket.io": "^2.0.3"
  }
}

Server.js

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var express = require("express");

var five = require("johnny-five");
var board = new five.Board({port:"COM4"});
const port = process.env.PORT || 3000;

app.use(express.static("public"))

io.on('connection', function (socket) {
    console.log("New User Connected")
    board.on("ready", function(){
        socket.on("turnLightOn", function(data){
            var led = new five.Led({
                pin:"13"
            });
            if(data.status){
                led.on();
            }else{
                led.off();
            }
        })
    })
});

server.listen(port, function(){
    console.log("Listening on port 3000")
});

index.js

var socket = io();

$("#toggle-light").on("click", function(){
    $("#led").toggle();
    if($("#led").css("display") == "none"){
        var status = false
    }else{
        var status = true
    }
    socket.emit("turnLightOn", {
        status
    })
})

index.html

<html>
    <head>
        <title>Home Automation</title>
    </head>
    <body>
        <h1>Home Automation</h1>
        <button id="toggle-light">Toggle Light</button>
        <div id="led" style="width:100px; height:100px; background:yellow;"></div>

        <p id="moistureLevel"></p>
        <script src="/socket.io/socket.io.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script src="/js/index.js"></script>
    </body>
</html>

【问题讨论】:

    标签: node.js git heroku


    【解决方案1】:

    这意味着 package.json 文件没有检入到您的 git 项目的根目录中,因此 Heroku 检测到它不是 Node.js 应用程序。你可以在本地看到这个:

    git show master:package.json
    

    要修复它,您需要确保项目的根目录中有一个 package.json(其中还有一个 .git 目录),并将其添加到 git:

    git add package.json
    git commit -m 'track package.json'
    

    可以改进措辞(“未能检测到 set buildpack”)。它可能应该说“未能检测到 Node.js 应用程序”。运行 buildpack 的“检测”脚本 (https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect) 时,它会查找 package.json 文件以验证是否有可构建的节点应用程序。

    【讨论】:

    • 这确实有助于部署到 heroku,但我收到一个应用程序错误,提示我查看我的构建日志(构建日志太长,无法评论)
    • 也许你可以给我看一点点,比如“错误:找不到模块 bla bla bla”,也许你忘记了一些要添加到 package.json 的模块
    • 我在上面添加了一些图片
    • 我没有看到任何错误消息错误在哪里,那么看起来错误不是来自构建,而是来自您的脚本本身,因为如果错误来自构建的最后一行显示“http :blablabla 已部署到 heroku" 不会在那里
    • 当我在本地主机上看到它时,它工作得非常好。它可能是我的 package.json 文件吗?在上面添加。
    猜你喜欢
    • 2018-01-25
    • 2014-12-13
    • 2017-12-26
    • 2017-11-27
    • 2018-01-27
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    相关资源
    最近更新 更多