인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

sion1129's profile image
sion1129

asked

[Renewed] Node.js Textbook - From Basics to Project Practice

Structure the Nodebird project

질문 부탁드립니다

Written on

·

848

0

안녕하세요

express 서버 만들들고

app.use('', express.static(path.join(__dirname, 'static')));

html을 static 폴더 안에 넣어서 경로 예측 힘들게 말들었고

시퀄라이즈로 mysql과 연동했습니다

그런데 시퀄라이즈가 static 폴더 밖에 있어 html에 

시퀄라이즈.js를 가져올 수 없습니다

다른 방법이 있을까요?

mysqlnodejsmongodbSequelize

Answer 4

1

zerocho님의 프로필 이미지
zerocho
Instructor

시퀄라이즈는 서버에서 쓰는겁니다. 프론트에서는 서버 라우터에 요청을 보내서 라우터에서 시퀄라이즈 작업을 하는 겁니다.

sion1129님의 프로필 이미지
sion1129
Questioner

프론트에서 axios로 입력값을 라우터로 보내서 users라우터에서 mysql로 보내는 것이 맞나요?

zerocho님의 프로필 이미지
zerocho
Instructor

네 맞습니다~

0

sion1129님의 프로필 이미지
sion1129
Questioner

감사합니다!

html

<div class="join__main__phone">
<h3>휴대전화 번호</h3>
<input type="number" placeholder="'-' 구분없이 입력해주세요" id="number" onchange="printNum()" />
<button>인증번호 전송</button>
</div>

js

function printNum(){
userNum = document.getElementById('number').value;
console.log(userNum);
}

입니다

zerocho님의 프로필 이미지
zerocho
Instructor

저 js 파일을 어떻게 가져오시는 건가요? 그게 중요한 겁니다.

sion1129님의 프로필 이미지
sion1129
Questioner

<script src="../login_js/join.js"></script>

html파일 하단에 입력했습니다

혹시  axios 불러오는 코드를 위에 스크립트 코드보다 아래에 배치해야 하나요??

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
zerocho님의 프로필 이미지
zerocho
Instructor

axios 요청 보내는 코드를 실행할 때 printNum 스크립트가 아직 불러와지지 않은 상태같은데요. 순서를 조정해보세요.

sion1129님의 프로필 이미지
sion1129
Questioner

넵 감사합니다

이거랑 별개의 질문 하나만 부탁드립니다

구글 node.js 라이브러리 설치하고

npm install googleapi --save


html
<script type="module" src="./auth.js"></script>
js
let { google } = require("googleapis");

이렇게 하면
Uncaught ReferenceError: require is not defined
이 오류가 발생하는데 왜그러는지 알 수 있을까요?

zerocho님의 프로필 이미지
zerocho
Instructor

위에도 말씀드렸습니다. 프론트에서는 npm 패키지 못 씁니다.

sion1129님의 프로필 이미지
sion1129
Questioner

감사합니다!

0

sion1129님의 프로필 이미지
sion1129
Questioner

넵 감사합니다 

html의 정보를 axios를 통해 서버로 보낼려합니다

html에서 onclick 으로 js파일에서 유저 정보를 받습니다

그런데 html에서

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

이거 추가하면 html의 onclick이 undefined이고

npm으로 axois추가해서

js파일에서 import axios from 'axios';

하면 js파일의 함수들이 undefined입니다

axios를 통해 서버로 보내주는 js파일에만 type을 모듈로해서

import axios from 'axios';

이렇게 하면

 Failed to resolve module specifier "axios". Relative references must start with either "/", "./", or "../".

이 오류가 뜹니다

어떻게 해결할 수 있을까요?

zerocho님의 프로필 이미지
zerocho
Instructor

html에서는 npm 패키지를 import 할 수 없으므로 script 사용하는 것이 맞습니다. html의 onclick이 undefined가 될 리가 없습니다. 분명 코드에 문제가 있는 겁니다.

sion1129님의 프로필 이미지
sion1129
Questioner

html에 

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

추가하면

onchange, onclick이 이런 오류가 발생합니다

printNum은 

<input type="number" placeholder="'-' 구분없이 입력해주세요" id="number" onchange="printNum()" />

입니다

uncaught ReferenceError: printNum is not defined

    at HTMLInputElement.onchange 

왜이렇게 뜰까요?

zerocho님의 프로필 이미지
zerocho
Instructor

printNum을 어디에 선언하셨는데요? axios 추가하면서 printNum스크립트를 제거하신 건 아닌가요?

0

sion1129님의 프로필 이미지
sion1129
Questioner

혹시 nunjucks나 ejs 안 쓰고 html 파일만 불어오게 할 수 있나요?

zerocho님의 프로필 이미지
zerocho
Instructor

그냥 res.sendFile(HTML경로) 하시면 됩니다.

sion1129님의 프로필 이미지
sion1129
Questioner

html로 sendFile 할 경우 router 사용은 못하는 건가요?

zerocho님의 프로필 이미지
zerocho
Instructor

router 안에서 res.sendFile 하는 건데요?

sion1129님의 프로필 이미지
sion1129
Questioner

html로 sendFile 할 경우 router를 분리하는 것이 불가한가요?

zerocho님의 프로필 이미지
zerocho
Instructor

라우터 분리라는 게 어떤 말씀이신지 모르겠습니다 ㅠㅠ 그냥 하던대로 하시면 됩니다.

sion1129's profile image
sion1129

asked

Ask a question