我收到了要部署的项目,该项目使用了我不熟悉的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();
谢谢
答案 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