我正在尝试在Heroku上部署Perfect 2.0(使用swift包管理器)。存在current build pack for Swift 3 and Perfect 2.0,我已经测试并使用此buildpack将下面的模板成功推送到heroku应用程序而没有构建错误。特别是,我试图让Perfect's base template example - 在本地运行良好 - 部署到heroku作为概念证明。但问题是,这个构建包需要一个顶级的Procfile来通知heroku如何访问完美的服务器。在Perfect 1.0中,这个procfile只是web: perfectserverhttp --port $PORT
,但是这个新的procfile perfectserverhttp
不是一个可识别的命令。在我的heroku日志中,bash: perfectserverhttp: command not found
出现错误。处理这个问题的适当方法是什么?即我应该如何构建我的proc文件,并使用什么命令访问我的服务器实例?我可以通过使用web: .build/debug/<given_package.swift_name>
创建一个proc文件来在本地运行,但这不会转换为heroku上的部署。
答案 0 :(得分:2)
我已经分叉了那个项目并制作了Heroku Button deployable version here。为了实现这一点,我检查了示例应用程序,发现构建转储了function cacheFiles(filelink, filepath, cb) {
var path_array = filelink.split("/");
var foldername = path_array[path_array.length - 2]
//create new folder for locally html files
var newdir = filepath + '/' + foldername;
if (fs.existsSync(newdir)){
alert('file already exists, cannot cache this file.');
} else {
fs.mkdirSync(newdir);
}
//download and save index.html - THIS WORKS
var indexfile = fs.createWriteStream(newdir+'/index.html');
var request = http.get(filelink, function(response) {
response.pipe(indexfile);
indexfile.on('finish', function() {
indexfile.close(cb);
});
});
//read contents of data folder - THIS DOESN'T WORK
var datafolder = filelink.replace('index.html','');
fs.readdir( datafolder, function (err, datafiles) {
if (!err) {
console.log(datafiles);
}else{
console.log(err) ;
}
});
中的二进制文件,因此您的Procfile应该是:
.build/release/PerfectTemplate
注意,您还要设置
web: .build/release/PerfectTemplate --port $PORT
。如果您已经部署但在此之前失败了,那么您还需要确保扩展网络动态:$PORT
。