как экспортировать const
У меня есть два файла и нужно экспортировать const из одного в другой.Сама не понимаю почему неверно.
Пишу вот так import route from './routes/auth'
Файл откуда экспорт
const express = require('express')
import * as AuthController from '../controllres/auth'
const router = express.Router()
router.post('/signup', AuthController.signup)
router.post('/signin', AuthController.signin)
export default router;
Файл куда экспорт
const express = require('express')
const mongoose = require('mongoose')
const session = require('express-session')
const bodyParser = require('body-parser')
const morgan = require('morgan')
const config = require('config')
const bluebird = require('bluebird')
import route from './routes/auth'
const PORT = config.get('port') || 5000
const app = express();
mongoose.Promise = bluebird
mongoose.connect(config.get('database'))
.then( () => console.log('mongoOk'))
.catch( () => console.log('nook'))
app.listen(PORT, () => console.log(`port ${PORT}`))
app.use(morgan('combined'))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
extended: true
}))
app.use(session({
resave: true,
saveUninitialized: true,
secret: "steind"
}))
app.use('/api', route)
Ответы (1 шт):
export и import в NodeJS все еще находятся в экспериментальном режиме. Вы можете их использовать указав параметр "type": "module" в вашем package.json файле. Применяя данный подход, вы также должны явно указать расширение файла, которое импортируете.
Подробнее об этом можно посмотреть здесь:
Также обратите внимание на слово controllres у вас там опечатка.
И еще один нюанс: app.listen() лучше вызывать в самом конце, после добавления всех app.use() и подобных конструкций, потому как объект app подвергается изменениям и ему нужно собрать всю необходимую информацию до того как приложение будет готово и переведено в режим прослушивания.
Я использую версию NodeJS 14.15.1 и вот что у меня получилось:
package.json
{
"type": "module",
"dependencies": {
...
}
...
}
controllers/auth.js
export function signup(req, res, next) {
return res.end('signup', 'utf8');
}
export function signin(req, res, next) {
return res.end('signin', 'utf8');
}
routes/auth.js
import { Router } from 'express';
import * as AuthController from '../controllers/auth.js';
const router = Router();
router.get('/signup', AuthController.signup);
router.get('/signin', AuthController.signin);
export default router;
index.js
import express from 'express';
import { json, urlencoded } from 'body-parser';
import route from './routes/auth.js';
const PORT = 5000;
const app = express();
app.use('/api', route);
app.listen(PORT, () => console.log(`port ${PORT}`));