首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘需要参数hostname’vhost

‘需要参数hostname’vhost
EN

Stack Overflow用户
提问于 2021-08-05 08:07:31
回答 1查看 14关注 0票数 0

在AWS中遇到了一个奇怪的问题: express vhost。每次部署时,我的EB日志中都会出现以下错误:

代码语言:javascript
复制
TypeError: argument hostname is required
    at vhost (/var/app/current/node_modules/vhost/index.js:39:11)
    at Object.<anonymous> (/var/app/current/app.js:554:9)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47
/var/app/current/node_modules/vhost/index.js:39
    throw new TypeError('argument hostname is required')
    ^

如果我看一下vhost模块,index.js:第36行,我们有以下内容:

代码语言:javascript
复制
function vhost(hostname, handle) {
  if (!hostname) {
    throw new TypeError('argument hostname is required')
  }

  if (!handle) {
    throw new TypeError('argument handle is required')
  }

  if (typeof handle !== 'function') {
    throw new TypeError('argument handle must be a function')
  }

甚至没有任何类型检查或类似于处理的主机名上的任何东西,只是检查是否传入了值。在下面的代码中很明显就是这样:

代码语言:javascript
复制
const app = express();
const register_app = express();
const nonadmin_app = express();
    register_app.use(express.static(path.resolve(__dirname, './build/register')));
nonadmin_app.use(express.static(path.resolve(__dirname, './build/nonadmin')));    

app.use(vhost('register.<eb-dev-url>.elasticbeanstalk.com/', register_app))
app.use(vhost('nonadmin.<eb-dev-url>.elasticbeanstalk.com/', nonadmin_app))
app.use(vhost('api.<eb-dev-url>.elasticbeanstalk.com/', api))

register_app.get('/register', (req, res) => {
    res.sendFile(path.resolve(__dirname, './build/register', 'index.html'));
})

nonadmin_app.get('/nonadmin', (req, res) => {
    res.sendFile(path.resolve(__dirname, './build/nonadmin', 'index.html'));
})

我不相信这是vhost的问题,因为当使用nodemon在本地运行这个应用程序时,使用register.localhostnonadmin.localhostapi.localhost时,它工作得很好。我还尝试使用.localhost后缀进行部署,但仍然不起作用。

我是否在AWS主机名配置方面遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-08-05 08:26:29

答案是hostname参数中的尾随斜杠。

将引发错误请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68662812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档