์๋ ํ์ธ์,
๊ฐ๋ฐ ์ค์ธ POC์ ์ผ๋ถ๋ก ๋ด ๊ฐ๋ ์ฑ์ด requirejs์ ํจ๊ป ์๋ํ ์ ์๋๋ก ํ๋ ์์ ์ํ์ ์ค๋นํ์ต๋๋ค. ์ด์ JsHint๋ฅผ ํตํฉํ ๊ณํ์ ๋๋ค. ์ ์ผํ ์๊ตฌ ์ฌํญ์ nodejs๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ฆด๋ฆฌ์ค์ dist ํด๋์์ js ํ์ผ์ ๊ฐ์ ธ์์ require ๋ชจ๋๋ก ๋ก๋ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ๊ฒ ํ ๋ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์กํ์ง ์์ TypeError: _.each๋ ํจ์๊ฐ ์๋๋๋ค.
๋ด๊ฐ require๋ฅผ ํตํด ๋ก๋ํ ๋ค๋ฅธ ๋ชจ๋ ๋ชจ๋์ ๋ถํธ์คํธ๋ฉ ๋ฐ ๊ฐ๋์ฒ๋ผ ๊ด์ฐฎ์ต๋๋ค. underscore.js๋ฅผ ํฌํจํ์ฌ jshint ์ ์ ๋ก๋ํ์ง๋ง ์๋ฌด ์์ฉ์ด ์์์ต๋๋ค.
์ด๊ฒ์ jshint์ ๋ฒ๊ทธ์ ๋๊น ์๋๋ฉด ์ ๊ฐ ์๋ชปํ๊ณ ์๋ ๊ฒ์ ๋๊น? ์๋๋ ๋ด requirejs ๋ถํธ์คํธ๋ํ์ ์ํ ์ฝ๋์ ๋๋ค.
require.config({
baseUrl: '์คํฌ๋ฆฝํธ',
๊ฒฝ๋ก: {
'jshint': 'lib/jshint/jshint',
'๊ฐ๋': 'lib/angular/angular.min',
'angular-route': 'lib/angular/angular-route.min'
},
shim: {
'app': {
deps: ['jshint','angular', 'angular-route']
},
'angular-route': {
deps: ['angular']
}
}
});
ํ์ํ๋ค
(
[
'์ฑ'
],
๊ธฐ๋ฅ(์ฑ)
{
angular.bootstrap(๋ฌธ์, ['์ฑ']);
}
);
๋ฐ์ค์ด jshint์ ์ข ์์ฑ์ผ๋ก ํ์๋์ง ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ๋ํ ํ๋ jshint๋ lodash๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก lodash์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ์์ ์ ์์ต๋๋ค.
๊ทธ๋ฅ ์คํ๋ณผ๋ฆฐ
๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค ... ์ด๋ค ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ด๋ป๊ฒ ๋ requirejs(๋๋ ์ผ๋ฐ์ ์ผ๋ก AMD)๊ฐ ์์ผ๋ฉด lodash ๋ก๋๊ฐ ์คํจํฉ๋๋ค.
v2.6.3์์ ์๋ํ์ง๋ง v2.7.0์์ ์คํจํ๊ธฐ ์์ํฉ๋๋ค.
v2.9.3 ์ํ์ ๋ณด์ฌ์ฃผ๋
VM104 jshint.js:15777
Uncaught TypeError: _.each is not a function
require.14.lodash @ VM104 jshint.js:15777
s @ VM104 jshint.js:6
(anonymous function) @ VM104 jshint.js:6
...
๋์กฐ์ ์ผ๋ก,
์ด๋ค ์์ด๋์ด๋ผ๋?
SystemJS์์๋ https://github.com/systemjs/systemjs/blob/master/docs/module-formats ์ ๋ฐ๋ผ ๋ฉํ์์ ํ์์ global
(AMD ๋๋ CommonJS์ ๋ฐ๋)๋ก ์ง์ ํด์ผ ํฉ๋๋ค . md#๊ธ๋ก๋ฒ
SystemJS.config({
baseURL: './js',
defaultJSExtensions: true,
paths: {
'jquery': './js/vendor/jquery/jquery-3.2.1.min.js',
// ...
},
meta: {
'./js/vendor/codemirror/addon/lint/jshint.js': { format: 'global' }
}
});
SystemJS.import('./js/app.js').then(function (app) {
// ...
})
Webpack์ ์๋์ผ๋ก ํ์์ ๊ฐ์งํฉ๋๋ค.
์ด๊ฒ์ด requireJS์ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด๋ป๊ฒ ๋ requirejs(๋๋ ์ผ๋ฐ์ ์ผ๋ก AMD)๊ฐ ์์ผ๋ฉด lodash ๋ก๋๊ฐ ์คํจํฉ๋๋ค.
v2.6.3์์ ์๋ํ์ง๋ง v2.7.0์์ ์คํจํ๊ธฐ ์์ํฉ๋๋ค.v2.9.3 ์ํ์ ๋ณด์ฌ์ฃผ๋
VM104 jshint.js:15777 Uncaught TypeError: _.each is not a function require.14.lodash @ VM104 jshint.js:15777 s @ VM104 jshint.js:6 (anonymous function) @ VM104 jshint.js:6 ...
๋์กฐ์ ์ผ๋ก,
- JSHINT v2.6.3์ด ์๋ํ๋
- v.2.7.0 ์ด ์๋
์ด๋ค ์์ด๋์ด๋ผ๋?
2.6.3 ์ดํ์๋ Underscore์์ Lodash๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
'var _ = require("underscore");'๋ฅผ ํ์ธํ์ญ์์ค. 2.6.3 ๋ฐ 'var _ = require("lodash");' 2.12.10์์
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๋ป๊ฒ ๋ requirejs(๋๋ ์ผ๋ฐ์ ์ผ๋ก AMD)๊ฐ ์์ผ๋ฉด lodash ๋ก๋๊ฐ ์คํจํฉ๋๋ค.
v2.6.3์์ ์๋ํ์ง๋ง v2.7.0์์ ์คํจํ๊ธฐ ์์ํฉ๋๋ค.
v2.9.3 ์ํ์ ๋ณด์ฌ์ฃผ๋
๋์กฐ์ ์ผ๋ก,
์ด๋ค ์์ด๋์ด๋ผ๋?