작성
·
430
0
안녕하세요 선생님
npm start 실행하면 config파일이 잘 불러와지는데
npm run test를 실행하면 config 파일이 불러와지지 않는 것 같습니다.
routes/auth.test.js
● Test suite failed to run
TypeError: Cannot read properties of undefined (reading 'database')
10 | const db = {};
11 | const sequelize = new Sequelize(
> 12 | config.database, config.username, config.password, config,
| ^
13 | );
14 |
15 | db.sequelize = sequelize;
at Object.database (models/index.js:12:12)
at Object.require (app.js:17:21)
at Object.<anonymous> (routes/auth.test.js:1:30)
npm run test를 했을 때 뜨는 오류입니다.
{
"development": {
"username": "root",
"password": "비밀번호",
"database": "nodebird",
"host": "127.0.0.1",
"dialect": "mysql"
},
config/config.json 파일에 developmont도 존재합니다.
const Sequelize = require('sequelize');
const fs = require('fs');
const path = require('path');
const env = process.env.NODE_ENV || 'development';
console.log(env);
const config = require('../config/config')[env];
console.log(config)
const db = {};
const sequelize = new Sequelize(
config.database, config.username, config.password, config,
);
models/index.js 파일입니다.
npm start를 실행하면 에러없이 실행되고, console.log도 실행되어서 env, config 다 undefined가 아님을 확인했습니다.
어떤 부분이 문제인지 감을 잘 잡지 못하겠습니다.
힌트 좀 주실 수 있을까요?
답변 2
0
{ "development": { "username": "root", "password": "비밀번호", "database": "nodebird", "host": "127.0.0.1", "dialect": "mysql" }, 이거 development 말고 test때도 넣으셨나요? NODE_ENV가 test가 됩니다. 테스트 시에는요.
사실 문서에서 굳이 찾으실 필요가 있나 싶습니다. 그냥 console.log(NODE_ENV)하면 test라는 게 보이니까요.
process.env는 언제든 직접 바꿀 수 있습니다. NODE_ENV=test_home jest를 하면 NODE_ENV가 test_home으로 바뀝니다.
선생님 죄송한데 질문 다시 한 번만 드리겠습니다..
"test": "set NODE_ENV=test-remote && jest --runInBand",
package.json에 test 스크립트를 위처럼 써 놓았는데
models/index.js에서 똑같이 config를 불러오지 못합니다.
const Sequelize = require('sequelize');
const fs = require('fs');
const path = require('path');
const env = process.env.NODE_ENV || 'development';
console.log('NODE_ENV =', process.env.NODE_ENV);
const config = require('../config/config')[env];
const db = {};
const sequelize = new Sequelize(
config.database, config.username, config.password, config,
);
위에서 process.env.NODE_ENV 를 출력하는 console.log도 실행되지 않습니다.
0
안녕하세요 선생님!
test NODE_ENV 추가해서 잘 되었습니다.
회사에서 남아서 자주 공부를 해서 여러 실행 프로필을 만들어두려고 했는데,
위에 처럼 임의로 제가 NODE_ENV를 만들고 적용할 수 있을까요?
npm run test 시에는 test NODE_ENV가 고정인 것 같아서 여쭤봅니다.
test-remote나 test-home 등 이렇게 test시에도 NODE_ENV를 바꿀 수 있었으면 좋겠는데 정보를 찾기가 쉽지 않습니다.
jest 공식 문서도 보고 있는데.. test 시에는 NODE_ENV가 test라고 나오는 내용을 제가 못 찾아서..
NODE_ENV 관련 검색을 해도 예시 값으로 development, production만 계속 보이는 것 같아서 혹시 어떻게 찾으셨는지도 여쭤봐도 될까요?