-
Notifications
You must be signed in to change notification settings - Fork 48
Description
Support plan
- which support plan is this issue covered by? (e.g. Community, Core, Plus, or Enterprise): Community
- is this issue currently blocking your project? (yes/no): No
- is this issue affecting a production system? (yes/no): No
Context
- node version: 14.1.0
- module version with issue: 5.1.3 through 6.0.1
- last module version without issue: 5.1.2
- environment (e.g. node, browser, native): Node
- used with (e.g. hapi application, another framework, standalone, ...): hapi
- any other relevant information: I believe this regression was caused by 4514a5e
What are you trying to achieve or the steps to reproduce?
Trying to serve a directory based on an absolute path, as shown in the example below. Using the example, visiting / in the browser fails to render the directory listing. Visiting a subpath that is a file does work, such as /app.js. However, subpaths that are directories also fail to render their directory listing.
In the example, removing path.resolve() "fixes" the issue. Please note that, in my real app, I have path set to a function and the actual value is determined by some business logic that walks the filesystem and returns an absolute path.
'use strict';
const path = require('path');
const hapi = require('@hapi/hapi');
const inert = require('@hapi/inert');
const server = hapi.server({
debug : {
log : ['error'],
request : ['error']
},
port : 3000
});
const start = async () => {
await server.register([inert]);
server.route({
method : 'GET',
path : '/{filepath*}',
handler : {
directory : {
path : path.resolve('build'),
listing : true
}
}
});
await server.start();
};
start();What was the result you got?
A 500 Internal Server Error, which seems to be caused by inert joining an absolute path with another absolute path, resulting in a path that does not exist. For some reason, this doesn't happen on subpaths that are files.
What result did you expect?
The directory listing should be shown.