javascript - 启动 Angular 服务器时出错

标签 javascript angularjs express server sendfile

我有以下 server.js 文件:

var express = require('express'),
    api     = require('./api'),
    app     = express();

app
    .use(express.static('./public')) 
    .use('./api', api)
    .get('*', function (req, res) { 
        res.sendfile('public/main.html'); 
    })
    .listen(3000); 

server.js 文件位于 C:\Users\myName\Desktop\prodfixes\server.js 中,main.html 位于 C:\Users\myName\Desktop\prodfixes\public\main.html 中 并前往 http://localhost:3000/不会在屏幕上抛出错误,但是在命令行上(我使用nodemon server.js 运行服务器)我收到错误:express deprecated res.sendfile: Use res.sendFile 相反。所以然后我显然将 res.sendfile 更改为 res.sendFile 但当我刷新屏幕时出现错误:

TypeError: path must be absolute or specify root to res.sendFile at ServerResponse.sendFile (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\response.js:394:11) at C:\Users\myName\Desktop\prodfixes\server.js:9:7 at Layer.handle [as handle_request] (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\route.js:131:13) at Route.dispatch (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\layer.js:95:5) at C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\index.js:277:22 at param (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\index.js:349:14) at param (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\index.js:365:14) at Function.process_params (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\index.js:410:3)

抱歉,我是 Angular 和使用服务器的新手,因此我们将不胜感激。谢谢。

最佳答案

使用path.resolve应该以跨平台兼容的方式解决这个问题:

var express = require('express'),
    path = require('path'),
    api = require('./api'),
    app = express();

app
    .use(express.static('./public')) 
    .use('./api', api)
    .get('*', function (req, res) { 
        res.sendFile(path.resolve('public/main.html')); 
    })
    .listen(3000); 

path.resolve 将提供文件的绝对路径,以满足 res.sendFile() 函数的要求:

Unless the root option is set in the options object, path must be an absolute path of the file.

http://expressjs.com/api.html

关于javascript - 启动 Angular 服务器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32061000/

相关文章:

JavaScript : How to access to the data imported from the controller with ajax?

javascript - 监听事件的指令

javascript - Promise 函数位于单独的文件中

javascript - Node JS 找不到另一个文件夹中文件的模块错误

javascript - JS SDK auth.logout 事件行为最近似乎发生了变化 - 发生了什么?

javascript - 在()之间封装js函数?

javascript - Node redis 发布者消耗过多内存

javascript - 如果 ng-repeat 小于 x,AngularJS 添加附加项目

angularjs - Material 设计 md-icon 和 md-select 对齐

node.js - 绕过路由处理中的身份验证