为啥 localhost 不适用于节点 js api

Posted

技术标签:

【中文标题】为啥 localhost 不适用于节点 js api【英文标题】:why localhost not working for node js api为什么 localhost 不适用于节点 js api 【发布时间】:2021-05-23 21:03:17 【问题描述】:

我正在 nodejs 和 mongodb 中创建 api,但 url 不起作用这里是文件:

app.js

const express = require('express')
const mongoose = require('mongoose')
const url = 'mongodb://localhost/AlienDBex'

const app = express()

mongoose.connect(url, useNewUrlParser:true)
const con = mongoose.connection

con.on('open', () => 
    console.log('connected...')
)

app.use(express.json())

const alienRouter = require('./routes/aliens')
app.use('/aliens',alienRouter)

app.listen(9000, () => 
    console.log('Server started')
)



  aliens.js

const express = require('express')
const router = express.Router()
const Alien = require('../models/alien')


router.get('/', async(req,res) => 
    try
        //    const aliens = await Alien.find()
           res.json('aliens')
    catch(err)
        res.send('Error ' + err)
    
)
module.exports = router



 alien.js

const mongoose = require('mongoose')


const alienSchema = new mongoose.Schema(

    name: 
        type: String,
        required: true
    ,
    tech: 
        type: String,
        required: true
    ,
    sub: 
        type: Boolean,
        required: true,
        default: false
    

)

module.exports = mongoose.model('Alien',alienSchema)

网址:https://localhost:9000/aliens 不起作用。 我已经正确安装了节点 js,但 localhost 不适用于上述 url。 请帮帮我,我已经安装了所有的包,但它不起作用。

【问题讨论】:

控制台的输出是什么? 除了 [nodemon] 由于更改而重新启动之外,控制台中没有任何内容... [nodemon] 开始 node app.js (node:6136) DeprecationWarning: 当前的服务器发现和监控引擎已被弃用,并且将在未来的版本中删除。要使用新的服务器发现和监控引擎,请将选项 useUnifiedTopology: true 传递给 MongoClient 构造函数。 (使用node --trace-deprecation ... 显示警告的创建位置)服务器开始连接... 【参考方案1】:

因为 localhost url 也有一个端口号。 现在,如果你正确安装了 mongodb,最可能的 url 应该是这样的。

const url = "mongodb://localhost:27017/yourCollectionName"

【讨论】:

无法解决问题。请提前提供任何其他解决方案。【参考方案2】:

你为什么使用 https ?仅对 localhost 使用 http,因为您在本地没有 ssl 设置 http://localhost:9000

【讨论】:

以上是关于为啥 localhost 不适用于节点 js api的主要内容,如果未能解决你的问题,请参考以下文章

为啥@click 不适用于 vue js 中的 h1 标签

不适用于节点 js 中的 fs.readFile

为啥这个 Dijkstra 算法不适用于这个特定的输入?

mirage.js 不适用于 Angular 中的子 url 路径(仅适用于根路径)

Socket.io 适用于 localhost 但不适用于 Heroku 服务器

为啥`npm install -g` 不适用于 web3?