2016-12-28 15 views
0

私はMEANスタックに100%新しく、現在はMichael Moserのvideoの助けを借りて自習しています(読んでいる方は、わかりやすいビデオ!:))。私はCRUDの機能を備えた非常に基本的なプログラムを作ろうとしていますが、Angular JSファイルを読み込むときにこの特定のエラーメッセージが表示されません。誰かが私を正しい方向に向けることができますか?ここで平均スタック - AngularJSスクリプトの読み込み中にエラーが発生しました

enter image description here

私のコードは次のとおりです。

package.json

{ 
    "name": "starter-node-angular", 
    "main": "server.js", 
    "dependencies": { 
    "body-parser": "~1.4.2", 
    "express": "^4.5.1", 
    "method-override": "~2.0.2", 
    "mongoose": "~3.8.0" 
    } 
} 

server.js

// modules needed 
// express - middleware 
var express   = require('express'); 
var app    = express(); 

// listens for request to server and throws main.html as response 
app.get('/', function(req,res) { 
    res.sendfile(__dirname + '/client/views/main.html'); 
}); 

// listens for request to server with 'scripts' in it and returns the appropriate file declared 
// in the script tag 
app.use('/scripts', express.static(__dirname + '/client/scripts')); 

app.listen(3000, function(){ 
    console.log("Ready..."); 
}); 

HTML

<html ng-app="ProductApp"> 
    <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.js" type="text/javascript"></script> 
    <script type="text/javascript" src="/client/scripts/main.js"></script> 
    <!-- stylesheets --> 
    <link href="/styles/main.css" rel="stylesheet" type="text/css"> 
</head> 

<body class="main-background" ng-controller="MainController"> 
    <!-- Area for Logo and Search Bar --> 
    <div class="header"> 
     <div class="main-logo"> 
      STUFF - Product Inventory v1.0 
     </div> 

     <div class="main-search"> 
      <input type="text" class="search-field" placeholder="What are you looking for?" /> 
      <img src="images/search-icon.png" title="Search" class="search-ico" /> 
     </div> 
    </div> 

    <!-- Area for Add Button --> 
    <div class="add-container"> 
     <div class="add-button" ng-click="addProduct(test);"> 
      <img src="images/add-icon.png" title="Add" class="add-ico" /> 
      <span class="add-text">Add Product</span> 
     </div> 
    </div> 

</body> 
</html> 

AngularJS

'use strict'; 

var app = angular.module('ProductApp', []); 

// Main controller 
app.controller('MainController', ['$scope', function ($scope) { 
    // Search Products 
    $scope.searchProduct = function (param) { 
     // Search fxn goes here... 
    } 

    // Add products 
    $scope.addProduct = function (param) { 
     alert('Add product'); 
    } 

    // Edit Products 
    $scope.updateProduct = function (param) { 
     // Update fxn goes here... 
    } 

    // Delete Product 
    $scope.deleteProduct = function (param) { 
     // Delete fxn goes here 
    } 
}]); 

私は呼び出しJSファイルは、単にsrcで完全なパスを宣言した背景から来ました。 Tbh、私は "ミドルウェア"の概念とすべてで、MEANの設定全体がちょっと複雑になっているのを見つけました。 :(私はしかし、その中にMongoDBの役割を高く評価しています。

とにかく、任意のヘルプやアドバイスをいただければ幸いです。神は、私は今それの多くを必要と知っている。

ありがとう。

更新1: は、私は私の<script>タグがなしの成功と、そのように私の角を呼び出す方法を変更してみました:

<script type="text/javascript" src="C:/users/myusername/documents/practice/product db/client/scripts/main.js"></script> 

はまた、私は右のlocalhost:3000が参照していることを考えるにしています〜製品DB以下のディレクトリ構造にありますか?私は3000がポート番号であることを認識しています。私のエラーログを見た後、私はlocalhostがアプリのソースフォルダのエイリアスにすぎないと考えていました。

enter image description here

の完全なパスはC:\ユーザー\ myusernameと指定の\ドキュメント\練習\製品のDB ...

はいつものように、ありがとう。 :)

+0

すべてのファイルがページに正しく読み込まれているかどうか確認できますか? – 31piy

+0

エラーはすべてあなたのスクリプトを見つけていないので、アプリケーションは起動できません。あなたは、あらゆる種類のもの(あなたのcssファイルなど)の要求を見ることができます。インデックス内。html、baseref属性(ヘッダーセクションの先頭にあるはずです)を確認し、そうでなければアプリケーションがそれらのファイル(特にmain.js)をどこに見つけるかを確認してください。 './client/scripts/main.js 'などのようなものを試してみるとどうなるでしょう。 –

+0

これを確認する方法はわかりませんが、' localhost:3000'を呼び出すたびにHTMLが読み込まれます。私は私のJSとCSSのために同じことを言うことができません。 –

答えて

1

HTMLタグにng-appを追加しました。ページのbodyに追加してみてください。

この操作を行います。スタイルシートスクリプトの両方を取得しながら、あなたはいくつかのミスをした

<body class="main-background" ng-app="ProductApp" ng-controller="MainController">

更新。適切なスタティックルートを定義する必要があります。これはすべてstatic files(stylesheets and scripts)で機能します。任意のstaticルートが/scriptsで始まる場合、これは、client/scriptsフォルダを検討するノードのアプリを教えてくれます

app.use('/scripts', express.static(__dirname + '/client/scripts')); 

あなたはあんた静的に定義されていたが、このようにルーティングされます。しかし、/clientが定義されておらず、デフォルトの '/'ルートも定義されていないので、src="/client/scripts/main.js"を使用してscriptを取得しようとしています。代わりにsrc="/scripts/main.js"にする必要があります。

もう1つ間違いは、stylesheetsを取得中です。 href="/styles/main.css"を使用しています。ここでも、/styles/も定義されていないため、cssファイルを取得することはできません。

代わりにこれを試してみてください:

Server.js

//define static routes like this 
app.use(express.static(__dirname + '/client')); 
// this will tell node app to look into the client folder, for any static file 

HTML:

以下のようにすべてのファイルを取得:

スタイルシートを取得するには:

/styles/filename

<link href="/styles/main.css" rel="stylesheet" type="text/css"> 

使用これはclientフォルダ内stylesフォルダになります。

は、スクリプトを取得するには:

使用/scripts/filename

<script type="text/javascript" src="/scripts/main.js"></script> 

これはclientフォルダ内scriptsフォルダになります。

+0

ありがとうございます。私はそれを試みたが、うまくいかなかった。 : –

+0

私の更新された答えを見てください。 –

+0

詳細な説明をありがとう!最後にそれが動作するように管理:) –

関連する問題