2017-09-19 6 views
0

저는 Laravel 5.5를 사용하고 있습니다. npm installnpm run dev을 실행했으며 일반적으로 Javascript를 실행하는 데 좋은 작업 환경이 있지만 lodash의 remove() 함수를 사용하여 배열에서 요소를 제거하는 동안 잡혔습니다.lodash의 remove() 함수를 사용할 수없는 이유는 무엇입니까?

TypeError: _.remove is not a function 

Lodash이 resources/assets/js/bootstrap.js에로드됩니다

var array = [1, 2, 3, 4]; 
var evens = _.remove(array, function(n) { 
    return n % 2 == 0; 
}); 

위의 코드는 다음과 같은 오류가 발생합니다.

window._ = require('lodash'); 

기타 lodash 메소드가 정상적으로 작동합니다.

_.each([1, 2], function(n) { 
    console.log(n); 
}); 

.remove()을 사용할 수없는 이유는 무엇입니까?

+0

package.json에는 어떤 버전의 lodash가 있습니까? – Ferrybig

+0

laravel-mix에는 package.json 내부에 "lodash"의 종속성 "^ 4.17.4"이 있습니다. – Kebian

답변

1

문제는 Laravel Spark도 사용하고 있다는 것입니다. Spark은 resources/assets/js/bootstrap.js을 사용하지 않고 자체 부트 스트랩을 vendor/laravel/spark/resources/assets/js/spark-bootstrap.js에로드합니다.

실제로 스파크의 부트 스트랩은 lodash 대신 underscore 패키지가 필요하므로 혼동이됩니다.

window._ = require('underscore'); 
+0

전역 식별자를 사용하는 대신 명시 적으로 lodash가 필요한 경우 더 쉽지 않을까요? 'import from _ 'lodash'; '는 lodash를 사용하고자하는 모든 모듈에서 충분합니다. – Mjh

+0

Laravel과 Spark 프레임 워크는 특별히 'window._'를 설정하고 사용합니다. 물론 이것은 전역 적입니다. 방금 기존 인스턴스를 다시 사용하려고했습니다. 저는 개인적으로 밑줄을 사용하게되어 기쁩니다. 그렇습니다. 다른 변수에 lodash를 가져 오는 것이 옵션입니다. – Kebian