2017-09-25 13 views
1

私はpayCtrlを実装してストライプ支払いを処理しようとしていますが、Expressを動作させることができません。このコードを実行すると、以下のエラーが表示されます。私はこれにはまだ新しく、なぜこのエラーが出るのか理解したいと思います。コントローラで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'); 
}); 

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 (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 
}); 
+0

あなたは角度のエラーが発生していると思います。 JSコードでHTMLコード全体を更新できますか?コントローラーに問題があります – Thusitha

+0

Hmmm「あなたの全体のHTMLをJSコードで更新する」という意味が分かりません – Oscar

+0

* payment.html *には「ng-controller」がないため、 – Thusitha

答えて

0

あなたの角度コントローラは$httpモジュールを注入しなければならないが、アプリはサーバーからコードを継承していないだろう、クライアント側とクライアント側のコードで定義されていません。

$httpモジュールは、など.get .put .delete

angular.module('paymentController', []) 

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

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

    }); 

}); 

$ http.post({})における第二のパラメータとしての側の多数の他の方法に沿って.postメソッドが含まれている、あなたのコントローラに送信するデータです。

最後に、POSTリクエストを取得するサーバーメソッドが必要です。

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

あなたのサーバへの角度を使用してデータを送信しようとしているとして、あなたはあなたのモデルにフォームデータをバインドする必要があり、そしてフォームを削除するか、イベントを提出し、POSTが自分自身を要求作る形成するために聞きますあなたがしたい方法。

HTML文書全体が含まれていないので、コメントに記載されているとおりに文書にng-controller宣言がないなど、他のエラーが含まれているかどうかは分かりません。

0

私はあなたがそうあなたがする必要があるすべてがあるthis Stripe tutorialに続い前提としています

あなたはpaymentCtrlで書かれたコードがapp.listen

// 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 
}); 

Unknown provider: appProvider <- app <- paymentCtrl

前にserver.jsにコピーする必要がありますつまり、注入しようとしている変数appがクライアント側のコードに存在しないことを意味します。

関連する問題