我试图启动我的Node.js服务器,我有2个文件:我的app.js
const express = require('express'),
app = express(),
bodyParser = require('body-parser'),
morgan = require('morgan'),
consign = require('consign'),
cors = require('cors'),
passport = require('passport'),
passportConfig = require('./passport')(passport),
jwt = require('jsonwebtoken'),
config = require('./index.js');
app.use(express.static('.'));
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.use(morgan('dev'));
app.use(cors());
app.use(passport.initialize());
app.set('playersecret', config.secret);
consign({ cwd: 'services' })
.include('Player/app/setup/')
.then('Player/app/api/')
.then('Player/app/routes/')
.into(app);
module.exports = app;
和/app/routes/auth.js
const models = require('@Player/app/setup');
module.exports = (app) => {
const api = app.PlayerAPI.app.api.auth;
app.route('/',).get((req,res) => res.send('Player API'));
app.post('/api/auth/',api.login(models.User));
}
并且据我所知,我的路由未导入app.js
,因为如果我在app.js
中编写代码,则可以正常使用。
如何正确导入?
答案 0 :(得分:0)
您定义app
路由的方式是它接受app.js
实例,因此您需要在const express = require('express')
const authRoutes = require('./app/routes/auth.js')
const app = express()
// ...
authRoutes(app)
中执行以下操作:
const express = require('express')
const app = express()
// ...
require('./app/routes/auth.js')(app)
或者你可以内联这个要求,虽然我发现这个杂乱(个人意见):
/app/routes/auth.js
更好的方法是导出router
对象:
const express = require('express')
const models = require('@Player/app/setup')
const api = require('./path/to/PlayerAPI.js')
const router = express.Router()
router.get('/', ...)
router.post('/', api.login(models.User))
module.exports = router
app.js
const express = require('express')
const authRoutes = require('./app/routes/auth.js')
const app = express()
// ...
app.use('/api/auth', authRoutes)
{{1}}
答案 1 :(得分:0)
如果要导入js文件,则必须在app.js的开头包含文件名,如下所示。
var express = require('express')
var auth = require(./app/routes/auth.js)
您可以在express.js官方文档文件中了解有关导入javascript文件的更多信息。