2017-11-25 8 views
0

ノードとExpressとpostgresqlを使用してビルドとAPIを使用する場合、this tutorialに従っています。これに関する私のコードはすべてGithubにあります。ノードAPIの起動と実行

私のserver/routes/index.jsには次のものがあります(番号は行番号です)。

1: app.get('/api/todos', todosController.list); 
2: // app.post('/api/todos/:todoId/items', todoItemsController.create); 
3: app.post('/api/todos', todosController.create); 
4: app.get('/api/todos/:todoId', todosController.retrieve); 
5: app.put('/api/todos/:todoId', todosController.update); 
6: app.delete('/api/todos/:todoId', todosController.destroy); 

私には2つの問題があります。

最初の問題は4行目と5行目が機能しない(他の行はすべて2行目を除く)という問題です。私はそれらをテストするために郵便配達/ブラウザを使用すると、私は

ReferenceError: TodoItem is not defined 
    at retrieve (/Users/X-lem/Development/TestAPI/server/controllers/todos.js:25:20) 
    at Layer.handle [as handle_request] (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/layer.js:95:5) 
    at next (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/route.js:137:13) 
    at Route.dispatch (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/route.js:112:3) 
    at Layer.handle [as handle_request] (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/layer.js:95:5) 
    at /Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:281:22 
    at param (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:354:14) 
    at param (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:365:14) 
    at Function.process_params (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:410:3) 
    at next (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:275:10) 
    at urlencodedParser (/Users/X-lem/Development/TestAPI/node_modules/body-parser/lib/types/urlencoded.js:91:7) 
    at Layer.handle [as handle_request] (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/layer.js:95:5) 
    at trim_prefix (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:317:13) 
    at /Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:284:7 
    at Function.process_params (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:335:12) 
    at next (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:275:10) 
    at jsonParser (/Users/X-lem/Development/TestAPI/node_modules/body-parser/lib/types/json.js:109:7) 
    at Layer.handle [as handle_request] (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/layer.js:95:5) 
    at trim_prefix (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:317:13) 
    at /Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:284:7 
    at Function.process_params (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:335:12) 
    at next (/Users/X-lem/Development/TestAPI/node_modules/express/lib/router/index.js:275:10) 

第二に、私は、コンソールがクラッシュライン2のコメントを解除し、私はこのエラーを取得するときに、このエラーが発生します。

ReferenceError: todoItemsController is not defined 
    at module.exports (/Users/X-lem/Development/TestAPI/server/routes/index.js:9:40) 
    at Object.<anonymous> (/Users/X-lem/Development/TestAPI/app.js:16:27) 
    at Module._compile (module.js:612:30) 
    at Object.Module._extensions..js (module.js:623:10) 
    at Module.load (module.js:531:32) 
    at tryModuleLoad (module.js:494:12) 
    at Function.Module._load (module.js:486:3) 
    at Module.require (module.js:556:17) 
    at require (internal/module.js:11:18) 
    at Object.<anonymous> (/Users/X-lem/Development/TestAPI/bin/www:3:13) 
    at Module._compile (module.js:612:30) 
    at Object.Module._extensions..js (module.js:623:10) 
    at Module.load (module.js:531:32) 
    at tryModuleLoad (module.js:494:12) 
    at Function.Module._load (module.js:486:3) 
    at Function.Module.runMain (module.js:653:10) 
    at startup (bootstrap_node.js:187:16) 
    at bootstrap_node.js:608:3 
[nodemon] app crashed - waiting for file changes before starting... 

私はAPIを構築するのが初めてで、それを自分自身で教えようとしています。私は役に立たない多くの異なったトラブルシューティング方法を試みた。どんな助けもありがとう、ありがとう。

答えて

0

私はちょっとお手伝いできます。あなたのミスタイプをしたため#2の問題がありました。 routes/index.jsファイルをご覧ください。コントローラを変数todosControllerにインポートしましたが、定義されていない変数todoItemsControllerを使用している9番目の行にコントローラをインポートしました。したがって、ちょうど app.post('/api/todos/:todoId/items', todosController.create);が動作します。

関連する問題