Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用express和nodejs提供Angular应用程序时无法获取/获取_Javascript_Node.js_Angular_Express_Server - Fatal编程技术网

Javascript 使用express和nodejs提供Angular应用程序时无法获取/获取

Javascript 使用express和nodejs提供Angular应用程序时无法获取/获取,javascript,node.js,angular,express,server,Javascript,Node.js,Angular,Express,Server,我正在尝试使用nodejs为angular应用程序提供服务。但是我得到了这个错误 页面正文中的“无法获取/”。我尝试了很多方法,但仍然不起作用。你们有什么建议吗 const express = require('express') const app = express() var cors = require('cors') const bodyParser = require('body-parser') const fileUpload = require('express-fileupl

我正在尝试使用nodejs为angular应用程序提供服务。但是我得到了这个错误 页面正文中的“无法获取/”。我尝试了很多方法,但仍然不起作用。你们有什么建议吗

const express = require('express')
const app = express()
var cors = require('cors')
const bodyParser = require('body-parser')
const fileUpload = require('express-fileupload')

const couchDb = require('./modules/couchDb')
const db = couchDb.db
const schedules = require('./modules/schedules')
const stations = require('./modules/stations')
const testConfigs = require('./modules/testConfigs')

app.use(cors())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.use(fileUpload())

app.listen(5000, () => console.log('Listening on port 5000'))


////////////////////////////////////////
// View
////////////////////////////////////////
const viewOptions = { include_docs: true }
app.route('/api/schedules').get((req, res) => {
    couchDb.getType('schedule', viewOptions).then(docs => {
        res.send(docs)
    }).catch(err => {
        console.log(err)
        res.send({})
    })
})

app.route('/api/stations').get((req, res) => {
    couchDb.getType('station', viewOptions).then(docs => {
        res.send(docs)
    }).catch(err => {
        console.log(err)
        res.send({})
    })
})

app.route('/api/tests').get((req, res) => {
    couchDb.getType('testConfig', viewOptions).then(docs => {
        res.send(docs)
    }).catch(err => {
        console.log(err)
        res.send({})
    })
})

你错过了你的路线

app.get('/', function (req, res) {
      res.send('hello world')
  })

或者,您需要通过中间件包含所有路由。

您会遇到该错误,因为您没有声明任何端点或告诉服务器提供任何服务。它正在侦听端口5000,但尚未定义对任何URL的响应。下面是一段示例代码,可以解决您的问题

const express = require('express')
const app = express()
var cors = require('cors')
const bodyParser = require('body-parser')
const fileUpload = require('express-fileupload')


app.use(cors())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.use(fileUpload())

// This block will make it so that every path on port 5000 responds with "Hello, World!"
app.get('*', (req, res) => {
    res.status(200).send("Hello, World!");
});

app.listen(5000, () => console.log('Listening on port 5000'))

这将使其以基本文本响应。如果您想为角度应用程序提供服务,您需要研究从express提供静态内容:

您必须使用路由中间件并将您的模块映射到所需的模块。同时确保您的模块安装在路由器实例中

差不多

const express = require('express')
const app = express()
var cors = require('cors')
const bodyParser = require('body-parser')
const fileUpload = require('express-fileupload')

const couchDb = require('./modules/couchDb')
const db = couchDb.db
const schedules = require('./modules/schedules')
const stations = require('./modules/stations')
const testConfigs = require('./modules/testConfigs')

app.use(cors())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.use(fileUpload())

//All requests with /schedules will go to './modules/schedules' 
app.use('/schedules', schedules);
app.use('/stations', stations);

app.listen(5000, () => console.log('Listening on port 5000'))
您的./modules/站应该如下所示

var express = require('express')
var router = express.Router()

router.get('/', function (req, res) {
  res.send('You are in /station')
})
router.get('/new', function (req, res) {
  res.send('You are in /station/new')
})

module.exports = router

更多信息:

在我的原始问题中,我未能复制要路由并发送到应用程序的代码。我现在已经添加了它。我试过你的建议。。它打印“hello world”,但不为构建的angular应用程序提供服务。@bosscar请参阅我答案的最后一部分,您需要使用express为应用程序提供静态文件(html/css/js)。您需要编写App.all(“/*”,function(req,res,next){//只需发送index.html以支持HTML5模式res.sendFile('index.html',{root:uu dirname});});在我的原始问题中,我未能复制要路由并发送到应用程序的代码。我现在已经添加了它。我尝试了你的建议。.它打印“hello world”,但不服务于所构建的angular应用程序。请检查此项