javascript - 尝试在 Controller 中使用express时出错

标签 javascript angularjs node.js express stripe-payments

我一直在尝试实现 paymentCtrl 来处理 Stripe 付款,但无法让 Express 正常工作。当我执行此代码时,出现以下错误。我对此很陌生,想了解为什么会出现此错误。

错误:

Unknown provider: appProvider <- app <- paymentCtrl

app.js:

angular.module('userApp', ['appRoutes', 'userControllers', 'userServices', 'ngAnimate', 'mainController', 'authServices', 'managementController', 'paymentController'])

.config(function($httpProvider) {
    $httpProvider.interceptors.push('AuthInterceptors');
});

付款.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>

付款控制:

angular.module('paymentController', [])

.controller('paymentCtrl', function(app, passport) {

  app.post('/charge', function(req, res){

  });


});

服务器.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 (e.g., '/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 Controller 应该注入(inject) $http 模块,应用程序在您的客户端代码中未定义,因为客户端不会从您的服务器继承代码。

$http 模块包含 .post 方法以及许多其他方法,例如 .get .put .delete 等。

angular.module('paymentController', [])

.controller('paymentCtrl', function(app, passport, $http) {

  $http.post('/charge', {}, function(req, res){

  });

});

$http.post ({}) 中的第二个参数是您要传输到 Controller 的数据。

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

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

当您尝试使用 Angular 向服务器发送数据时,您需要将表单数据绑定(bind)到您的模型,然后删除表单或监听表单提交事件,并按照您想要的方式自行发出 POST 请求。

由于您没有包含整个 HTML 文档,因此很难看出是否包含任何其他错误,例如文档中缺少注释所述的 ng-controller 声明。

关于javascript - 尝试在 Controller 中使用express时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46403253/

相关文章:

javascript - Angularjs $http.get 不工作

javascript - 为什么我无法在Socket.IO中保存当前房间?

javascript - Angular .js : reference the current model by short variable name

javascript - 从远程组件传递数据

javascript - 在 AngularJS 中提交表单?

javascript - 为什么在 Angular 2 中,事件属性在括号中?

angularjs - Angular 应用程序的 PayPal 快速结帐?

javascript - DOM 属性更改调试

node.js - 使用来自 Docker 的 env 变量的 React 连接被拒绝错误

node.js - 在整个应用程序中使用单个数据库连接?