2

Web アプリケーション開発に Angular、express、nodeJS を使用しています。

角度コード:

'use strict';
//
 Declare app level module which depends on filters, and services
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'myApp.controllers']).
  config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/view1', {templateUrl: 'partials/partial1.html', controller: 'MyCtrl1'});
    $routeProvider.when('/view2', {templateUrl: 'partials/partial2.html', controller: 'MyCtrl2'});
    $routeProvider.otherwise({redirectTo: '/view1'});
  }]).config(['$locationProvider', function($locationProvider) {
    $locationProvider.html5Mode(true);
}]);;


angular.module('modelDemo', []).
config(function ($routeProvider) {
    $routeProvider.
    when('/', {
        controller: 'AuthorListCtrl',
        templateUrl: 'partials/list.html'
    });
     $routeProvider.
    when('/view1', {
        controller: 'MyCtrl1',
        templateUrl: 'partials/partial1.html'
    });
   $routeProvider.otherwise({redirectTo: '/view1'})
});

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

エクスプレスコード

// all environments
app.set('port', process.env.PORT || 2000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'public')));
app.use(app.router);

app.get('/', wine.index);
app.get('/partials/:name', wine.partials);
app.get('/wines', wine.findAll);
// / app.get('/view1', wine.index);
app.get('/wines/:id', wine.findById);
app.post('/wines', wine.addWine);
app.put('/wines/:id', wine.updateWine);
app.delete('/wines/:id', wine.deleteWine);
app.get('/view1', wine.partials);
//app.get('/view1/:name', wine.partials);

2)

exports.index = function(req, res){
   console.log("request url---"+req.url);
   res.render('partials/' + req.params.name);
};

exports.partials = function(req, res) {
   console.log("request url---"+req.url);
   console.log(req.params.name);
   res.render('partials/' + req.params.name);
};

プロジェクト フォルダの構造: フォルダ構造

http://www.domain:2000/view1 というURL を使用してこのアプリケーションにアクセスしようとすると、

次のエラーが表示されます。

エラー: ServerResponse.res.render の Function.app.render (d:\era\startup\learnnod\restfull_angular2\node_modules\express\lib\application.js:494:17) でビュー "partials/undefined" を検索できませんでした ( d:\era\startup\learnnod\restfull_angular2\node_modules\express\lib\response.js:756:7) exports.partials (d:\era\startup\learnnod\restfull_angular2\routes\wines.js:104:9) ) パラメータ (d:\era\startup\learnnod\restfull_angular2\node_modules\express\lib) でのコールバック (d:\era\startup\learnnod\restfull_angular2\node_modules\express\lib\router\index.js:161:37) \router\index.js:135:11) パス (d:\era\startup\learnnod\restfull_angular2\node_modules\express\lib\router\index.js:142:5) で Router._dispatch (d:\era) \startup\learnnod\restfull_angular2\node_modules\express\lib\router\index.js:170:5) で Object.router (d:\era\startup\learnnod\restfull_angular2\node_modules\express\lib\router\index.js:33:10) 次の (d:\era\startup\learnnod\restfull_angular2\node_modules\express\node_modules\connect\lib\proto) .js:190:15) 再開時 (d:\era\startup\learnnod\restfull_angular2\node_modules\express\node_modules\connect\lib\middleware\static.js:60:7)

それについてさらに情報が必要な場合はお知らせください

4

2 に答える 2

5

問題は、Angular コードと Express コードの両方でルートを処理しようとしていることです。期待どおりに動作させるには、すべての非部分的/非 API ルートを index.html ファイルに向ける必要があります。

次のようにしてみてください。

wine.js (エクスプレス ルート ファイル)

exports.index = function(req, res) {
    res.sendfile(__dirname + "/public/index.html"); // updated to reflect dir structure
};

app.js (エクスプレス アプリ ファイル)

...
// make this your last route and remove your '/view1' route
app.get('*', wine.index);
...
于 2013-07-15T18:04:17.013 に答える
0

wine.js では parameter を使用してnameいますが、ルートではその部分をコメントしています。

app.get('/view1', wine.partials);
//app.get('/view1/:name', wine.partials);

ルートでパラメーターを指定していないため:name、アクセスしようとするとreq.params.name未定義になります。undefinedそして、存在しないファイルを探します。

Error: Failed to lookup view "partials/undefined" at Function.app.render

あなたはおそらくしたいですres.render('partials/view1');

于 2013-07-15T18:20:57.700 に答える