这是我的角度控制器和我的帖子请求:
$http.post('/formDevis', $scope.formData).then(function(response) {
if (response.data) {
$('#successModal').modal();
console.log(response);
}
}, function(response) {
$('#errorModal').modal();
});
这是我的文件' server.js'用我的快速配置:
var express = require('express');
var path = require('path');
var nodeMailer = require('nodemailer');
var bodyParser = require('body-parser');
var app = express();
var port = 3000;
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.post('/formDevis', function(req, res) {
const devis = req.body;
res.send('it work');
});
好的,所以如果我这样做,我会得到回复并且我的表格已发布。 问题出在我的应用程序中的几个url。如果我直接在浏览器中输入,我无法访问我的网址。示例:如果我输入' my.com/users',则会给我一个错误。
我有一个文件' routes.js'用我的所有路线使用uiRouter。我想,可能是我必须用我的快速配置连接该文件?
我尝试添加:
app.use(function(req, res) {
res.sendFile(__dirname + '/public/index.html');
});
然后,我的所有路线都有效,我可以直接在浏览器中访问它们。但另一方面,我的帖子请求不再起作用。 作为回应,它向我发送了我的index.html文件。
我尝试了几件事,但都没有奏效。我是新来表达的,很抱歉,如果我的问题是愚蠢的。可能是我错过了一些明显的东西 谢谢你的帮助
答案 0 :(得分:0)
这将作为静态文件提供公共目录(没有声明虚拟根目录):
app.use(express.static(path.join(__dirname, 'public')));
因此,如果您有以下文件夹结构public/index.html
,则可以访问此页面 - localhost:3000/index.html
public/css/styles.css
也是如此,您可以像这样访问该文件 - localhost:3000/css/styles.css
现在这很好,但如果你想改变路线怎么办?
为静态文件定义虚拟根目录:
app.use('/', function(req, res) {
res.sendFile(__dirname + '/public/index.html');
});
app.use('/users', function(req, res) {
res.sendFile(__dirname + '/public/users.html');
});
答案 1 :(得分:0)
感谢您的帮助@ thomann061,但它对我不起作用。我认为我的问题一开始并不够清楚。
我有一个文件' routes.js'用我的所有路线使用uiRouter。对于我的应用程序中的一个视图,我有多个文件html(一个用于导航栏,几个用于主要内容,一个用于页脚...)。
routing.config(($stateProvider, $urlRouterProvider, $locationProvider, $translateProvider) => {
$locationProvider.html5Mode(true);
$urlRouterProvider.otherwise('/');
$stateProvider.state('home', {
url: '/',
views: {
'nav@': {
templateUrl: 'templates/nav.html',
controller: 'NavController'
},
'content@': {
templateUrl: 'templates/content/acceuil/acceuil.html',
controller: 'TranslateController'
},
'clients@home': {
templateUrl: 'templates/content/acceuil/clients.html',
controller: 'ClientsController'
},
'top-footer@': {
templateUrl: 'templates/footer/top-footer.html'
},
'footer@': {
templateUrl: 'templates/footer/footer.html'
}
}
}).state('devis', {
url: '/devis',
views: {
'nav@': {
templateUrl: 'templates/nav.html',
controller: 'NavController'
},
'content@': {
templateUrl: 'templates/content/devis/devis.html',
controller: 'DevisController'
},
'cgv@devis': {
templateUrl: 'templates/content/devis/cgv.html'
},
'success@devis': {
templateUrl: 'templates/content/devis/success.html'
},
'error@devis': {
templateUrl: 'templates/content/devis/error.html'
},
'top-footer@': {
templateUrl: 'templates/footer/top-footer.html'
},
'footer@': {
templateUrl: 'templates/footer/footer.html'
}
}
});
然后,我在我的' server.js'中添加了这行代码:
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.get('*', function(req, res) {
res.sendFile(__dirname + '/public/index.html');
});
app.post('/formDevis', function(req, res) {
const devis = req.body;
res.send('it work');
});
像这样,它适用于我,我的所有路线和我的发布请求。