해결된 질문
작성
·
466
0
서버작동을 위한 node app.js를 실행할때에 dotenv를 require, import를 하면서 문의점이 발생했습니다.
//server.js
import { creatApp } from "./app.js";
import database from "./models/database.js";
const startServer = async () => {
try {
await database;
const app = creatApp();
const PORT = process.env.PORT;
app.listen(PORT, () => {
console.log(`server is listening on ${PORT}👌`);
});
} catch (err) {
console.log(`Failed server connect❌`);
database.destroy();
}
};
startServer();
//database.js
import { createConnection } from "typeorm";
import dotenv from "dotenv";
dotenv.config();
const database = createConnection({
type: process.env.DB_CONNECTION,
host: process.env.DB_HOST,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
port: process.env.DB_PORT,
database: process.env.DB_DATABASE,
});
export default database;
이렇게 진행하면 정상적으로 서버가 정상적으로 작동하지만 database.js에서의 dotenv import 부분을 require방식으로 server.js에 옮겨놓으면 에러가 발생합니다.
근본적으로 commonJS(require)방식과 module(import)방식에 대해서 dotenv를 불러올때에 require를 쓰면 server.js에 적용할때는 정상적으로 작동하는데 import를 똑같은상황에서 적용하려면 왜 database.js로 넘어가야하는지 그게 궁금해졌습니다!
require와 import를 해올 때 전반적으로는 rquire는 동기적이고 import비동기적인 성질(?)때문이라고 하기에 영향이 있는건지.. 근본적인 이해가 되지 않아서요..ㅠㅜ
도움 부탁드리겠습니다 ㅠㅜ!!!!
답변 1
0
안녕하세요! zeler1004님!
본 질문과 관련된 내용으로는 require와 import 둘 다 모두 정상 작동하는 것 처럼 보여요!
아래는 require를 사용한 결과입니다!
다음으로 아래는 import를 사용한 결과입니다!
따라서, 둘 다 정상 작동 하며 commonjs에서도 module 방식처럼 동일하게 default 내보내기를 사용하여 테스트 해 보세요!
commonjs에서 default 내보내기를 하는 방법은 module.exports 를 사용하시면 됩니다!
감사합니다 ^^ 제안주신 내용과 똑같이 할때는 작동이 됩니다! 이것저것 시도해보겠습니다 감사합니다(__)