如何使用hapi npm配置index.js进行部署

时间:2018-11-28 10:29:28

标签: node.js heroku web-deployment package.json

我收到了要部署的项目,该项目使用了我不熟悉的hapi npm。我可以在本地成功运行它,但是当我尝试部署它时,在 heroku 上出现错误,错误是:

npm ERR! missing script: start

我认为也许我必须更改index.js中的某些内容,也许是服务器const中的端口或主机? 这是我的 index.js

const Hapi = require('hapi');
const path = require('path');
const fs = require('fs');
const util = require('util');


const readDir = util.promisify(fs.readdir);

const server = Hapi.server({
  port: 3000,
  host: 'localhost',
  routes: {
    files: {
      relativeTo: path.join(__dirname, 'public')
    }
  }
})

const start = async () => {
  await server.register(require('vision'));
  await server.register(require('inert'));

  server.views({
    engines: {
      html: require('handlebars')
    },
    relativeTo: __dirname,
    path: 'templates',
    layout: 'layout-other',
    layoutPath: 'templates/layout'
  });

  // Static files
  server.route({
    method: 'GET',
    path: '/{param*}',
    handler: {
      directory: {
        path: path.join(__dirname, 'public'),
        listing: true
      }
    }
  });

  require('./routes')(server);

  server.start();
}

start();

谢谢

2 个答案:

答案 0 :(得分:1)

npm start是在您的package.json文件中创建的脚本。 您可以查看有关here

的更多信息

package.json文件的示例:

{
  "name": "node-js-sample",
  "version": "0.2.0",
  "description": "A sample Node.js app using Express 4",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "somescript":"do something"
  },
  "dependencies": {
    "express": "^4.13.3"
  },
  "license": "MIT"
}

npm start将运行“开始”脚本。这意味着它将运行node index.js
npm somescript将运行“ somescript”脚本。这意味着它将运行do something

答案 1 :(得分:0)

缺少script: start。在package.json,中表示您缺少配置从哪里开始的信息 检查您的package.json文件,您应该像这样定义

"scripts": {
  "start": "node index.js"
}
  

如果您的应用具有要在部署时运行的构建步骤,则可以在package.json:中使用Postinstall script