2017-11-26 9 views
0

私はlocaltunnelを経由してパブリックにホストされ、localhostノードアプリケーションからAPIにアクセスしようとしているラズベリーパイサーバーに休憩APIを持っています。ローカルノードアプリケーションはエクスプレスで動作し、いくつかの静的なJSファイルを持っています。静的なJSファイルのいずれかから、私は、APIを休めるためにaxiosのAJAX要求を行うが、コンソールにCORSエラーを取得しています:CORSミドルウェアはnodeJSで動作しません

script.js

setTimeout(() => { 
    axios.get('https://wvoegmuism.localtunnel.me/api/ninjas') 
    .then(function (question) { 
     var data = question.data; 

    const questions = []; 
    $.each(data, function(index, value) { 
    console.log(JSON.stringify(value.the_question, null, "\t")) 
    console.log(JSON.stringify(value.the_answer, null, "\t")) 
    console.log(JSON.stringify(value.the_choices, null, "\t")) 
    questions.push(new Question(value.the_question, value.the_choices, value.the_answer)) 




    //console.log(data[index].the_question); 

    }) 
    quiz = new Quiz(questions) 
    populate() 
}), 1000}); 

私は私の急行ファイルapp.jsにCORSモジュールを含みます:

var cors = require("cors"); 
app.use(cors()); 

エンドポイントに別のサーバー上の私のREST APIのルートファイル:

var express = require("express"); 
var app = express(); 
var router = express.Router(); 
var mongoose = require("mongoose"); 
var customerschema = require("../models/customersSchema"); 
var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens 
var config = require('../config'); // get our config file 
var user = require("../models/user"); 
var bodyParser = require("body-parser"); 
app.use(bodyParser.json()); 
app.set('superSecret', "tokenproject"); // secret variable 
mongoose.Promise = require('bluebird'); 


router.get('/ninjas', function(req, res) { 
    customerschema.find({}).then(function(ninjas) { 
    res.send(ninjas); 
    }) 
}); 

コンソールエラー:

Failed to load https://wvoegmuism.localtunnel.me/api/ninjas: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. 

チュートリアルの後には、それは男のために働くが、私はそうではない。ここで私は何が欠けているのですか?ローカルノードアプリケーションだけでなく、REST APIルートにもCORSミドルウェアを含める必要がありますか?

+1

エラーが表示されますか?あなたのルートはどのように見えますか?質問のための十分な情報を投稿し、[最小で完全で検証可能な例](https://stackoverflow.com/help/mcve)を含める必要があります。 – LMulvey

+0

@LMulvey - FYI:オープンブラケット、mcve、クローズブラケット= [mcve] – Quentin

+0

ありがとう、@クエンティン。私は投稿した直後にそれを捕まえた。朝のコーヒーの前に質問に答えるべきではありません。 – LMulvey

答えて

1

Should I include CORS middleware not only to my local node app but also to REST API routes?

Excactly! Api-EndpointはCorsをオンにする必要があります。

+0

はい、そうでした!また、Restノードサーバーとローカルノードサーバーの両方を再起動するまでは機能しませんでした。どちらもnodemonを実行していますが、この場合は手動で再起動する必要があります。それも私の人生の15分のように無駄になった。ありがとう! – Limpuls

関連する問題