首页 > 解决方案 > 如何使用 hapi npm 配置 index.js 进行部署

问题描述

我收到了这个项目来部署,它使用了我不熟悉的 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();

谢谢

标签: node.jsherokuweb-deploymentpackage.json

解决方案


npm start是在您的package.json文件中创建的脚本。你可以在这里查看更多信息

文件示例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


推荐阅读