尝试在控制器中使用快速时出错

我一直在试图实现一个paymentCtrl来处理条纹支付,但无法让快递工作。 当我执行这个代码,我得到下面的错误。 我很新,想了解为什么我得到这个错误。

错误:

未知提供者:appProvider < – app < – paymentCtrl

app.js:

angular.module('userApp', ['appRoutes', 'userControllers', 'userServices', 'ngAnimate', 'mainController', 'authServices', 'managementController', 'paymentController']) .config(function($httpProvider) { $httpProvider.interceptors.push('AuthInterceptors'); }); 

payment.html:

 <div> <form action="/charge" method="post"> <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="pk_test_..." data-amount="3000" data-name="walla" data-description="this is not a dog" data-locale="auto" data-currency="gbp" ></script> </script> </form> </div> 

paymentCtrl:

 angular.module('paymentController', []) .controller('paymentCtrl', function(app, passport) { app.post('/charge', function(req, res){ }); }); 

server.js:

 var express = require('express'); // ExperssJS Framework var app = express(); // Invoke express to variable for use in application var port = process.env.PORT || 8080; // Set default port or assign a port in enviornment var morgan = require('morgan'); // Import Morgan Package var mongoose = require('mongoose'); // HTTP request logger middleware for Node.js var bodyParser = require('body-parser'); // Node.js body parsing middleware. Parses incoming request bodies in a middleware before your handlers, available under req.body. var router = express.Router(); // Invoke the Express Router var appRoutes = require('./app/routes/api')(router); // Import the application end points/API var path = require('path'); // Import path module var passport = require('passport'); // Express-compatible authentication middleware for Node.js. var social = require('./app/passport/passport')(app, passport); // Import passport.js End Points/API var stripe = require('stripe')('sk_test_...'); app.use(morgan('dev')); // Morgan Middleware app.use(bodyParser.json()); // Body-parser middleware app.use(bodyParser.urlencoded({ extended: true })); // For parsing application/x-www-form-urlencoded app.use(express.static(__dirname + '/public')); // Allow front end to access public folder app.use('/api', appRoutes); // Assign name to end points (eg, '/api/management/', '/api/users' ,etc. ) // // <---------- REPLACE WITH YOUR MONGOOSE CONFIGURATION ----------> // mongoose.connect('mongodb://localhost:27017/tutorial', function(err) { if (err) { console.log('Not connected to the database: ' + err); } else { console.log('Successfully connected to MongoDB'); } }); // Set Application Static Layout app.get('*', function(req, res) { res.sendFile(path.join(__dirname + '/public/app/views/index.html')); // Set index.html as layout }); // Start Server app.listen(port, function() { console.log('Running the server on port ' + port); // Listen on configured port }); 

您的angular度控制器应注入$http模块,应用程序未定义在您的客户端代码作为客户端不会从您的服务器inheritance代码。

$http模块包含.post方法和许多其他方法,如.get .put .delete

 angular.module('paymentController', []) .controller('paymentCtrl', function(app, passport, $http) { $http.post('/charge', {}, function(req, res){ }); }); 

$ http.post( {} )中的第二个参数是要传输给控制器的数据。

最后,您需要一个将检索POST请求的服务器方法。

 app.post('/charge', function(req, res) { // Your server endpoint for /charge POST action // req.body contains passed data. }); 

当您试图使用Angular将数据发送到您的服务器时,您需要将表单数据绑定到您的模型,然后删除表单或侦听表单提交事件,并按自己的意愿自行创buildPOST请求。

由于您没有包含整个HTML文档,因此很难看到是否还有其他错误,例如在文档中缺lessng-controller声明(如注释)。

我假设你遵循这个条纹教程,所以你需要做的是:

您在paymentCtrl中编写的代码应该在app.listen之前被复制到server.js中

 // Set Application Static Layout app.get('*', function(req, res) { res.sendFile(path.join(__dirname + '/public/app/views/index.html')); // Set index.html as layout }); app.post('/charge', function(req, res){}); // Start Server app.listen(port, function() { console.log('Running the server on port ' + port); // Listen on configured port }); 

未知提供者:appProvider < – app < – paymentCtrl

这意味着你正在尝试注入的appvariables不存在于你的客户端代码中。