我正在使用https://www.npmjs.com/package/express-subdomain软件包中的示例设置。但是,当我在浏览器中尝试api.localhost:3000时,它会引发错误:“无法获取/”
如何使api.localhost:3000运行?我会考虑其他解决方案,而不仅仅是使用express-subdomain
的解决方案,只要您不必在设置中输入fqdn即可。
app.js:
var subdomain = require('express-subdomain');
var express = require('express');
var app = express();
// *** Code examples below go here! ***
var router = express.Router();
//api specific routes
router.get('/', function(req, res) {
res.send('Welcome to our API!');
});
router.get('/users', function(req, res) {
res.json([
{ name: "Brian" }
]);
});
app.use(subdomain('api', router));
app.listen(3000);
package.json:
{
"name": "auth_manager",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.3",
"express-subdomain": "^1.0.5"
}
}
答案 0 :(得分:1)
我认为该API处于http://api.example.com/而不是api.localhost:3000中。但是,如果要在本地运行它们,建议您遵循https://www.npmjs.com/package/express-subdomain#developing-locally
答案 1 :(得分:0)
如果计划在本地开发时使用此中间件,则必须确保在您的hosts文件中列出了您的子域。请参阅here。
在MacOS上:
调整主机文件以转发来自url的请求:
sudo nano /etc/hosts
127.0.0.1 myapp.dev
127.0.0.1 api.myapp.dev
清除缓存:
sudo killall -HUP mDNSResponder
快递:
app.use(subdomain('api', router));
任何身份验证中间件都需要调整以对api.myapp.dev
而非localhost
进行身份验证
在Chrome中,您可以使用api.myapp.dev
网址
如果您正在使用SSL(https)并具有自签名证书:Chrome通常会阻止主机文件URL(如果不是localhost
)。然后,您需要在Chrome窗口中的任意位置单击,然后直接键入thisisunsafe
,它将使您通过。请参阅此ticket。