webpack/babel์ ์ํด ๋ณํ๋ ์ฝ๋๋ฅผ ํตํด ๋ชจ๋์ ์คํํ๋ ๋์ ๋ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
Module not found: Error: Can't resolve 'coffee-script' in '/node_modules/vm2/lib'
@ ./~/vm2/lib/main.js 19:10-34
@ ./~/vm2/index.js
@ ./lib/config.js
@ ./lib/server.js
https://github.com/patriksimek/vm2/blob/master/lib/main.js#L19
์ด ์ค์์ coffee-script
๋ชจ๋์ ์ฌ์ฉํ๊ณ ์์ง๋ง ๋ชจ๋ ์ข
์์ฑ์ผ๋ก ์ ์๋์ด ์์ง ์์ต๋๋ค.
๋ฐ๋ผ์ webpack์ด ๋ชจ๋ ์๊ตฌ ์ฌํญ์ ๋งคํํ๋ ค๊ณ ํ๋ฉด ์ถฉ๋์ด ๋ฐ์ํ์ฌ ์ด๋์๋ coffee-script
๋ชจ๋์ ์ฐพ์ ์ ์์ต๋๋ค.
UPD: ์ด๊ฒ์ ๊ธฐ๋ฅ ์์ฒญ์ด ์๋๋ผ vm2 ๋ชจ๋ ์ข
์์ฑ ๋ฌธ์ ์
๋๋ค. ์ด ๋ชจ๋์ ์ด ์ค ์ด ์์ ๋๊น์ง๋ ์ปคํผ ์คํฌ๋ฆฝํธ ๋ชจ๋์ด ์ค์น๋์ง ์์ ํ๊ฒฝ ์์ coffee-script
๋ก ์ง์ ๋ ์ปดํ์ผ๋ฌ ์ต์
๊ณผ ํจ๊ป ์๋ํ์ง ์์ต๋๋ค.
๋ฌธ์ ๋ฅผ ์ ๊ณ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๋๋ Webpack์ ๋ํ ๊ฒฝํ์ด ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์ ํ๋ ธ์ต๋๋ค. ๊ทธ๋ฌ๋ coffee-script
๋ฅผ ์์ ํ๋ก์ ํธ์ ์ข
์์ฑ์ผ๋ก ์ถ๊ฐํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? Webpack ํ๋ก์ธ์ค์๋ Node๊ฐ ์ํํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ฐฉ์์ด ํ์ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ชจ๋ node_modules
ํด๋๋ฅผ ๋ฃจํธ๊น์ง ๊ฒ์ํฉ๋๋ค.
๋ชจ๋์ ํ์ํ๊ธฐ ๋๋ฌธ์ coffee-script
๋ฅผ ๋ด ํ๋ก์ ํธ์ ์ข
์์ฑ์ผ๋ก ์ถ๊ฐํ๊ณ ์ถ์ง ์์ต๋๋ค. ๋๋ coffee-script
๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
์์ ์ ํ๋ก์ ํธ์์ ๋ค๋ฅธ ์ฌ๋์ ๋ชจ๋์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ข ์์ฑ์ผ๋ก ์ ์ธํด์ผ ํฉ๋๋ค.
๋ํ ๋๊ตฐ๊ฐ๊ฐ ๋น์ ์ ๋ชจ๋์ ์ค์นํ๊ณ ๊ทธ ์ฌ๋์ด coffee-script
๋ชจ๋์ ์ด๋์๋(ํ๋ก์ ํธ ๋๋ ๊ธ๋ก๋ฒ์์) ์ค์นํ์ง ์์ ๊ฒฝ์ฐ์๋ ํด๋น ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. Webpack์ ์์กดํ์ง ์์ต๋๋ค.
์ข์, ๋๋ ๋น์ ์ด ์ปคํผ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ webpack ํธํ atm์ด ์๋๋๋ค. ๋๋ ์๊ฐ์ด ์ข ์์ผ๋ฉด ์ด๊ฒ์ ์์๋ด๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ด๋ค.
์ด๊ฒ์ ์นํฉ๊ณผ์ ํธํ์ฑ์ ๊ฒฝ์ฐ๊ฐ ์๋๋๋ค.
๋ชจ๋์ npm์ ๊ฒ์ํ๊ณ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ์ ๋๋ค.
๋์ํ์ง ์์ต๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ปคํผ ์คํฌ๋ฆฝํธ ์์ด ์ ๋๋ก ์๋ํ๋ฏ๋ก ํ์ ์ข ์์ฑ์ผ๋ก ์ฐ๊ฒฐํ ์ด์ ๊ฐ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ปคํผ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๊ณ ๋ช ์์ ์ผ๋ก ๋งํ ๋๋ง ์ฌ์ฉ๋ฉ๋๋ค. ๋๋ ์ด๊ฒ์ ์ผ์ข ์ ํ๋ฌ๊ทธ์ธ ๋ฉ์ปค๋์ฆ์ผ๋ก ๋ฆฌํฉํ ๋งํ ๊ฒ์ด๋ค.
๊ทธ ์ด์ ๋ ์ฝ๋์ coffee-script
๊ฐ ๋ช
์์ ์ผ๋ก ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ฉฐ, ์ด๋ ์ด๋ป๊ฒ๋ ์ค์น๋์ด์ผ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ปดํจํฐ์ ์ด๋ฏธ coffee-script
๊ฐ ์ค์น๋์ด ์์ผ๋ฉด ๊ด์ฐฎ๊ณ ์๋ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๋์๋ coffee-script
๋ฅผ ์ค์นํ์ง ์๊ณ ์ปดํ์ผ๋ฌ ์ต์
์ด ์ค์ ๋ VM์ ์คํํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. 'coffeescript', 'coffee-script', 'cs' ๋๋ 'text/coffeescript' ์ค ํ๋๋ก ๋ณํ(https://github.com/patriksimek/vm2/blob/master/lib/main.js#L14- L18).
๋ํ ๋ชจ๋์ด ์์ง ์ค์น๋์ง ์์ ๊ฒฝ์ฐ coffee-script
์ปดํ์ผ๋ฌ์ ํจ๊ป ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด feature request
๋ผ๋ ๋ฐ ๋์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌธ์์๋ coffee-script
๊ฐ ์ฌ์ ์ค์น๋์ด์ผ ํ๋ค๋ ์๊ตฌ ์ฌํญ์ ๋ํ ์ธ๊ธ์ด ์์ต๋๋ค.
์, ํ์ฌ ์๋ ๋ฐฉ์์ ์ ํํ๊ฒ ์ค๋ช ํ์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ปดํ์ผ๋ฌ๊ฐ ์ปคํผ๋ก ์ค์ ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ์ปคํผ ์คํฌ๋ฆฝํธ๋ฅผ ์ค์นํ๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
๋น์ ์ด ๋ฌธ์์ ๋ํด ์ณ์์ต๋๋ค. ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
์, ๋ฌธ์ ์์ ์ผ๋ก๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ต๋๋ค. ์ฝ๋์ ์ฌ์ ํ require('coffee-script')
ํ์ด ์์ผ๋ฉฐ, ์ด๋ ์ต์ํ webpack์ ๋ํด ์ค๋ฅ๋ฅผ ์์ฑํฉ๋๋ค.
์, ์ด์ ๊ฒ์๋ฌผ์์ ์ผ๋ฏ์ด ์นํฉ๊ณผ ํธํ๋๋๋ก ์ผ์ข ์ ํ๋ฌ๊ทธ์ธ ๋ฉ์ปค๋์ฆ์ผ๋ก ๋ฆฌํฉํ ๋งํ ๊ฒ์ ๋๋ค.
ํ ๊ฐ์ง ๊ฐ๋จํ ๋ช ๋ น์ ์คํํ๋ ๊ฒ์ด ๋๋ฌด ์ด๋ ต๋ค๋ฉด ์ ๊ฒฝ ์ฐ์ง ๋ง์ธ์.
> npm install coffee-script --save
๊ทํ์ ํ๋ก์ ํธ๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋๊น์ง ๋ ์ด์ ์ฌ์ฉํ์ง๋ ๊ธฐ๋ค๋ฆฌ์ง ์์ ๊ฒ์ ๋๋ค.
@patriksimek ๊ฐ์ธ์ ์ผ๋ก ์ผ์ข ์ ํ๋ฌ๊ทธ์ธ ๋ฉ์ปค๋์ฆ์ด ์๋ค๋ ์ด์ ์ด ์์ต๋๋ค.
options.compiler
์ ๊ฐ์ ๊ฐ๋จํ ๊ฒ์ด ํจ์๊ฐ ๋๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
๊ทธ๋ฐ ๋ค์ CoffeeScript๊ฐ ํ์ํ ์ฌ์ฉ์๋ options.compiler
๋ฅผ (code) => { return require('coffee-script').compile(code, {header: false, bare: true}); }
๋ก ์ค์ ํ ์ ์์ต๋๋ค.
@dkfiresky ์์ฐ, ์ ์ ํ ์๋ฃจ์ ์ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค๋ ์ด์ ๋ง์ผ๋ก ์๋ง ๋ช ์ ์ฌ์ฉ์๊ฐ ์ปคํผ ์คํฌ๋ฆฝํธ๋ฅผ ํ์๋ก ํ์ง ์๋๋ฐ๋ ๊ฐ์ ๋ก ๋ค์ด๋ก๋ํ๊ฒ ํ ๊ฑฐ๋ผ๊ณ ์ ๋ง ์์ํ์ต๋๊น? ๊ทธ๊ฑฐ ์ฌํ๋ค.
@n-riesco ์ค์ ๋ก ์ด๊ฒ์ ์ด๋ฏธ ์ง์๋ฉ๋๋ค. ๋ฌธ์ ๋ coffeescript
์ต์
์ ๋ํ ์ง์ ์ค๋จ์ด ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด๋ฉฐ ๋จผ์ ๋ ๋์ ์๋ฃจ์
์ ์๋ํ๊ณ ์ถ์ต๋๋ค(์๋ ๊ฒฝ์ฐ).
@patriksimek ๋๋ ๋น์ ์ด ๋น์ ์ ๋ชจ๋์ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ฌํ๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ์ปคํผ ์คํฌ๋ฆฝํธ์ ์ฌ์ฉ์ ๊ทํ์ ์ฑ
์์
๋๋ค. ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ข
์์ฑ์ผ๋ก ์ ์ ํด์ผ ํฉ๋๋ค . ๋์ํ์ง ์์ผ๋ฉด ํด๋น require ๋ฌธ๊ณผ coffee-script
๋ฅผ ์ต์
์ผ๋ก ํ์ํ๋ ์ปดํ์ผ๋ฌ ์ต์
์ ์ ๊ฑฐํ์ญ์์ค.
์ด ๋ฌธ์ ๋ ๋ชจ๋์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ฑ๋์์ต๋๋ค. ๊ฐ๋จํ ์ค์น ๋ช ๋ น์ ์คํํ๊ธฐ ์ํด 18์ผ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ๋๋ด์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
๋ํ ๋ชจ๋์ด coffee-script
๋ฅผ ์ปดํ์ผํ๋ค๊ณ ๋ช
์ํ๋ฉด ํด๋น ๋ชจ๋์ package.json ์ ์ข
์์ฑ์ผ๋ก ์ ๋ฌํด์ผ ํฉ๋๋ค.
๋น์ ์ ๋ด๊ฐ ์๋ง ๋ช ์ ์ฌ์ฉ์์๊ฒ ์ปคํผ ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํ๋๋ก ๊ฐ์ํ ๊ฒ์ด๋ผ๊ณ ์ ๋ง๋ก ์์ํ์ต๋๊น?
์ฝ๋ ์์ require('coffee-script')
๋ก ์ํํ ์์
์
๋๋ค. ๋น์ ์ ๋ด๊ฐ ๊ทธ๊ฒ์ ์ฌ์ฉํ์ง ์๋๋ผ๋ ๋ด๊ฐ ์ปคํผ ์คํฌ๋ฆฝํธ๋ฅผ ์ค์นํ๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
๊ฐ๋จํ ์ค์น ๋ช ๋ น์ ์คํํ๊ธฐ ์ํด 18์ผ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ๋๋ด์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
๋น์ ์ ๋ด๊ฐ ์ ๋ ํ์ง ์๊ฒ ๋ค๊ณ ๋งํ ๊ฒ์ ๋ด๊ฐ ํ๊ธฐ๋ฅผ ์ฌ์ ํ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค. ๋ค์ ํ ๋ฒ - ์ด ๋ชจ๋์ ํ์ฌ Webpack๊ณผ ํธํ๋์ง ์์ต๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
@patriksimek ์ด ๋ชจ๋์ coffee-script
๊ฐ ์ค์น ๋์ง ์์ ํ๊ฒฝ์์๋ ํธํ๋์ง ์๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค.
@dkfiresky ๋ฌผ๋ก , ๊ทธ๋ ๊ฒ ์๊ฐํ๋ค๋ฉด. ๋๋ ๋ ์ด์ ๋น์ ์ด ํ๋ ธ๋ค๊ณ ์ค๋ํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค. ์ด ์ธ๋ฐ์๋ ํ ๋ก ์ ๋ฉ์ถฐ๋ ๋ ๊น์?
@patriksimek ๋ค, ๋ง์ต๋๋ค. npm ๋ฌธ์๋ฅผ ์ฝ์ผ์ญ์์ค.
๋๋ vm2๋ฅผ ์ข ์์ฑ์ผ๋ก ์ถ๊ฐํ๊ธฐ ์ ์ ์ ์ ํ ๋ฐ์ ํ๋ก์ ํธ์์๋ ์ด๊ฒ์ ์ป์์ต๋๋ค. ๋๋ ์ปคํผ ์คํฌ๋ฆฝํธ์ ๋ํ ์ค๋ฅ๊ฐ ์์์ต๋๋ค.
Failed to compile.
/Users/mark/node_modules/coffee-script/lib/coffee-script/coffee-script.js
Module not found: Can't resolve 'module' in '/Users/mark/node_modules/coffee-script/lib/coffee-script'
ํ ๋ก ์ ์ด์กฐ๊ฐ ๊ทธ๋ค์ง ๊ฑด์ค์ ์ด์ง ์์์ง๋ง coffee-script
๋ฅผ ์ข
์์ฑ์ผ๋ก ์ถ๊ฐํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ๊ฐ๋จํ ์๋ฃจ์
์ด๋ฉฐ ๋ค์ํ ํ๊ฒฝ(์: Webpack, Next ๋ฑ)์์ ์ด ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@dkfiresky ์์ฐ, ์ ์ ํ ์๋ฃจ์ ์ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค๋ ์ด์ ๋ง์ผ๋ก ์๋ง ๋ช ์ ์ฌ์ฉ์๊ฐ ์ปคํผ ์คํฌ๋ฆฝํธ๋ฅผ ํ์๋ก ํ์ง ์๋๋ฐ๋ ๊ฐ์ ๋ก ๋ค์ด๋ก๋ํ๊ฒ ํ ๊ฑฐ๋ผ๊ณ ์ ๋ง ์์ํ์ต๋๊น? ๊ทธ๊ฑฐ ์ฌํ๋ค.
@n-riesco ์ค์ ๋ก ์ด๊ฒ์ ์ด๋ฏธ ์ง์๋ฉ๋๋ค. ๋ฌธ์ ๋
coffeescript
์ต์ ์ ๋ํ ์ง์ ์ค๋จ์ด ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด๋ฉฐ ๋จผ์ ๋ ๋์ ์๋ฃจ์ ์ ์๋ํ๊ณ ์ถ์ต๋๋ค(์๋ ๊ฒฝ์ฐ).