Javascript Node.js/Express.js/Angular2中的禁止错误 我正在修改使用快语代替膝关节炎。但是当Express中的/路线尝试加载时,我收到一个访问被拒绝错误需要对下面的代码进行哪些具体更改,以便新的/路线能够成功地服务于index.html?

Javascript Node.js/Express.js/Angular2中的禁止错误 我正在修改使用快语代替膝关节炎。但是当Express中的/路线尝试加载时,我收到一个访问被拒绝错误需要对下面的代码进行哪些具体更改,以便新的/路线能够成功地服务于index.html?,javascript,node.js,express,angular,Javascript,Node.js,Express,Angular,对示例应用程序所做的唯一更改是修改router.js,替换index.js,以及修改package.json。我将显示如下更改: router.js 以下是新的相关部分,为简洁起见,省略了旧内容。注意,我添加了一个*路由来处理/的请求,并添加了module.exports=function(app): 'use strict'; // expose the routes to our app with module.exports module.exports = function(app)

对示例应用程序所做的唯一更改是修改
router.js
,替换
index.js
,以及修改
package.json
。我将显示如下更改:

router.js

以下是新的相关部分,为简洁起见,省略了旧内容。注意,我添加了一个
*
路由来处理
/
的请求,并添加了
module.exports=function(app)

'use strict';

// expose the routes to our app with module.exports
module.exports = function(app) {

    //other routes omitted for brevity

    app.get('*', function(req, res) {
        console.log('inside / route!');
        res.sendfile('../client/index.html'); // load the single view file (angular will handle the front-end)
    });
};

server/index.js

以下是新的:


package.json


新的package.json是:

{
  "name": "angular2-esnext-starter",
  "version": "1.0.0",
  "main": "server/index.js",
  "scripts": {
    "start": "node server/index.js",
    "test": "COVERAGE_ENABLED=true gulp test",
    "webdriver-update": "webdriver-manager update"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/blacksonic/angular2-esnext-starter.git"
  },
  "author": {
    "name": "blacksonic",
    "email": "soos.gabor86@gmail.com"
  },
  "license": "ISC",
  "keywords": [
    "angular2",
    "es6",
    "webpack",
    "gulp"
  ],
  "description": "Angular 2 development in Javascript with ES6/ES7 syntax powered by Babel.",
  "engines": {
    "node": "4.4.2"
  },
  "dependencies": {
    "express": "^4.13.4",
    "jsonwebtoken": "7.0.1",
    "morgan": "^1.1.1",
    "method-override": "^2.1.3",

    "node-uuid": "1.4.7"
  },
  "devDependencies": {
    "@angular/common": "2.0.0-rc.4",
    "@angular/compiler": "2.0.0-rc.4",
    "@angular/core": "2.0.0-rc.4",
    "@angular/forms": "0.2.0",
    "@angular/http": "2.0.0-rc.4",
    "@angular/platform-browser": "2.0.0-rc.4",
    "@angular/platform-browser-dynamic": "2.0.0-rc.4",
    "@angular/router": "3.0.0-beta.2",
    "babel-core": "6.10.4",
    "babel-eslint": "6.1.1",
    "babel-loader": "6.2.4",
    "babel-plugin-__coverage__": "11.0.0",
    "babel-preset-angular2": "0.0.2",
    "babel-preset-es2015": "6.9.0",
    "bootstrap": "3.3.6",
    "codeclimate-test-reporter": "0.3.3",
    "del": "2.2.1",
    "es6-promise": "3.2.1",
    "es6-shim": "0.35.1",
    "gulp": "3.9.1",
    "gulp-cssnano": "2.1.2",
    "gulp-delete-lines": "0.0.7",
    "gulp-eslint": "3.0.1",
    "gulp-less": "3.1.0",
    "gulp-nodemon": "2.1.0",
    "gulp-protractor": "2.4.0",
    "gulp-util": "3.0.7",
    "gulp-watch": "4.3.8",
    "jasmine-core": "2.4.1",
    "json-loader": "0.5.4",
    "karma": "1.1.1",
    "karma-coverage": "1.1.0",
    "karma-jasmine": "1.0.2",
    "karma-phantomjs-launcher": "1.0.1",
    "karma-sourcemap-loader": "0.3.7",
    "karma-webpack": "1.7.0",
    "localStorage": "1.0.3",
    "mini-lr": "0.1.9",
    "phantomjs-polyfill": "0.0.2",
    "phantomjs-prebuilt": "2.1.7",
    "protractor": "3.3.0",
    "raw-loader": "0.5.1",
    "reflect-metadata": "0.1.3",
    "run-sequence": "1.2.2",
    "rxjs": "5.0.0-beta.6",
    "validate.js": "0.10.0",
    "webpack": "1.13.1",
    "zone.js": "0.6.12"
  }
}

错误消息
以下是在FireFox中打印的完整错误消息:

ForbiddenError: Forbidden
   at SendStream.error (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/send/index.js:275:31)
   at SendStream.pipe (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/send/index.js:508:12)
   at sendfile (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/response.js:1051:8)
   at ServerResponse.res.sendfile (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/response.js:481:3)
   at ServerResponse.eval [as sendfile] (eval at wrapfunction (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/depd/index.js:413:5), <anonymous>:4:11)
   at /home/user/nodejs_apps/angular2_oauth_seed_app/server/router.js:94:17
   at Layer.handle [as handle_request] (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/router/layer.js:95:5)
   at next (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/router/route.js:131:13)
   at Route.dispatch (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/router/route.js:112:3)
   at Layer.handle [as handle_request] (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/router/layer.js:95:5) 
禁止错误:禁止
在SendStream.error(/home/user/nodejs\u apps/angular2\u oauth\u seed\u app/node\u modules/send/index.js:275:31)
在SendStream.pipe(/home/user/nodejs\u apps/angular2\u oauth\u seed\u app/node\u modules/send/index.js:508:12)
在sendfile(/home/user/nodejs\u apps/angular2\u oauth\u seed\u app/node\u modules/express/lib/response.js:1051:8)
在ServerResponse.res.sendfile(/home/user/nodejs\u apps/angular2\u oauth\u seed\u app/node\u modules/express/lib/response.js:481:3)
在ServerResponse.eval[作为sendfile](在wrapfunction(/home/user/nodejs\u apps/angular2\u oauth\u seed\u app/node\u modules/depd/index.js:413:5)处进行评估,:4:11)
at/home/user/nodejs\u apps/angular2\u oauth\u seed\u app/server/router.js:94:17
在Layer.handle[作为handle_请求](/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/router/Layer.js:95:5)
下一步(/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/router/route.js:131:13)
在Route.dispatch(/home/user/nodejs\u apps/angular2\u oauth\u seed\u app/node\u modules/express/lib/router/Route.js:112:3)
在Layer.handle[作为handle_请求](/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/router/Layer.js:95:5)

错误来自res.sendfile(../);无法使用相对路径发送文件,因为express认为这是一个安全问题。要解决此问题,请使用path模块并使用
path.resolve('/where/youre/go')
而不是相对路径。

错误来自res.sendfile(../);不能发送具有相对路径的文件,因为express认为这是安全问题。要解决此问题,需要使用路径模块,并使用
path.resolve('/where/youre/go')
而不是相对路径。

谢谢您和+1。是的,我自己也发现了。但是有一个下游问题,就是要找出该应用程序中哪个
index.html
文件作为Angular2应用程序的根发送。当我发送
client/index.html
dist/client/index.html
时,浏览器控制台会以指示其无法读取ES6的方式进行投诉。不知何故,膝关节炎代码避免了这个问题,但是Exp.js代码目前不能服务于工作的ANGARL2/ES6应用程序。谢谢和+1。是的,我自己也发现了。但是有一个下游问题,就是要找出该应用程序中哪个
index.html
文件作为Angular2应用程序的根发送。当我发送
client/index.html
dist/client/index.html
时,浏览器控制台会以指示其无法读取ES6的方式进行投诉。不知何故,膝关节炎代码避免了这个问题,但Exp.js代码目前无法服务工作角2 /ES6应用程序。
ForbiddenError: Forbidden
   at SendStream.error (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/send/index.js:275:31)
   at SendStream.pipe (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/send/index.js:508:12)
   at sendfile (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/response.js:1051:8)
   at ServerResponse.res.sendfile (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/response.js:481:3)
   at ServerResponse.eval [as sendfile] (eval at wrapfunction (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/depd/index.js:413:5), <anonymous>:4:11)
   at /home/user/nodejs_apps/angular2_oauth_seed_app/server/router.js:94:17
   at Layer.handle [as handle_request] (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/router/layer.js:95:5)
   at next (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/router/route.js:131:13)
   at Route.dispatch (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/router/route.js:112:3)
   at Layer.handle [as handle_request] (/home/user/nodejs_apps/angular2_oauth_seed_app/node_modules/express/lib/router/layer.js:95:5)