javascript - server.js 文件外部的快速路由

标签 javascript angularjs node.js express

到目前为止,我已经遵循了许多 Express/Angular 指南来进行路由,并且在每种情况下都可以工作,并且我已经掌握了它的窍门,但是当我尝试将路由合并到 -另一个- JS 文件。

例如,我将其放入 server.js 中,它会起作用。如果我把它放在“char.js”中,它将不起作用。

我正在使用一个包,允许这些函数提取暴雪游戏数据。端点直接工作,但试图让函数内联工作。

server.js -- npm 打开的文件

app.get('/Users', function( req, res){
  return blizzard.wow.character(['profile'], { origin: 'us', realm: 'Myserver', name: 'Mycharname' })
    .then(response => res.json(response.data))

此功能将起作用 - 如果我转到/Users,我将获得 json 响应。

如果我把它移到

Chars.js

    const express = require('express');
const router = express.Router();
const account = require('../routes/account');
const wow = require('../routes/wow.js');
const sc2 = require('../routes/sc2');
const d3 = require('../routes/d3');
const blizzard = require('../config/blizzard.js');


/*
// Create a route for the 'Users' path
const char = router.get('Char', function( req, res){
  return blizzard.wow.character(['profile'], { origin: 'us', realm: 'Myserv', name: 'Myname' })
    .then(response => res.json(response.data))
});
*/



 // Create a route for the 'Users' path
    router.get('/', function(req, res) {
    return blizzard.wow.character(['profile'], { origin: 'us', realm: 'Myrealm', name: 'Mychar' })
    .then(response => res.json(response.data));
});

    });



/*
// Create a route for the 'Users' path
const users = router.get('Users', function(req, res) {
  return blizzard.wow.character(['profile'], { origin: 'us', realm: 'Myserv', name: 'Myname' })
    .then(response => res.json(response.data));
});
*/
module.exports = router;

它不再起作用了。我有 -same-snipper,但用户 Controller 中的 chars 变量具有差异名称,该 Controller 在该函数之外 100% 工作。

我不确定我到底错过了什么。

整个 Server.js

'use strict';

require('dotenv').config({ silent: true });

var express = require('express')
      ,http = require('http')
      ,path = require('path')
      ,app = express()
      ,fs = require('fs');
const router = express.Router();
const account = require('./routes/account');
const wow = require('./routes/wow');
const sc2 = require('./routes/sc2');
const d3 = require('./routes/d3');
const chars = require('./routes/chars.js');
const blizzard = require('./config/blizzard.js');



const port = process.env.PORT || 5000;
app.use('/account', account);
app.use('/wow', wow);
app.use('/sc2', sc2);
app.use('/d3', d3);
// Mount the 'Users' route to `/`
app.use(express.static('public'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.get('/', function (req, res) {  
  res.render('index');
});

app.use('/', chars);


app.listen(port, () => {
  console.log(`Blizzard.js Example App listening on port ${port}!`);
});

我由包所有者运行了这个,他说我在 Chars.js 中的代码应该可以工作,所以我觉得这与我的文件或变量的放置有关。我在 chars.js 上执行了 console.log 并从 server.js 得到了响应,所以我知道它正在加载它。

如果需要额外的脚本,请告诉我。这也可能是我的问题,因为我只修改了这两个脚本。

更新了代码以反射(reflect)更改

最佳答案

不要在 Chars.js 中创建另一个 Express 实例。

1 删除

const app = express()

2 移动

app.use('/', chars);

Chars.jsServer.js

工作示例:

server.js

'use strict';

const port = process.env.PORT || 5000;

const express = require('express')
      ,http = require('http')
      ,path = require('path')
      ,app = express()
      ,fs = require('fs');

const chars = require('./routes/chars.js');

app.use(express.static('public'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.get('/', (req, res) => res.render('index'));
app.use('/', chars);

app.listen(port, () => console.log('online:', port));

routes/chat.js

const express = require('express');
const router = express.Router();

router.get('/users', function(req, res) {
//       return blizzard.wow.character(['profile'], { origin: 'us', realm: 'Myrealm', name: 'Mychar' })
//                 .then(response => res.json(response.data));

    setTimeout(function() {
      res.json({data: 'some data'})
    }, 2000);
});

module.exports = router;

关于javascript - server.js 文件外部的快速路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40380236/

相关文章:

javascript - Google Maps API - 类 GLatLngBounds 的问题

javascript - .toISOString() 函数的问题

AngularJs 无法读取预定义的输入值

javascript - 单击/切换以显示更多

javascript - 需要在联系表单中刷新包含验证码的 div,而不必刷新整个页面

javascript - 根据数据对 div 进行排序

angularjs - 在angular js中处理来自$resource的数据响应

javascript - 与 Sequelize 的关联

javascript - Express.js 请求隔离

javascript - Nodejs 模块实现