【问题标题】:Why can't I use lodash's remove() function?为什么我不能使用 lodash 的 remove() 函数?
【发布时间】:2018-02-28 01:57:51
【问题描述】:

我正在使用 Laravel 5.5。我已经运行了 npm installnpm run dev 并且通常我有一个运行 Javascript 的良好工作环境,但是我在尝试使用 lodash 的 remove() 函数从数组中删除一个元素时被抓住了。

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

以上代码产生以下错误:

TypeError: _.remove is not a function

Lodash 在resources/assets/js/bootstrap.js 中加载。

window._ = require('lodash');

其他 lodash 方法也可以正常工作。

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

知道为什么我不能使用.remove()吗?

【问题讨论】:

  • 你的 package.json 中的 lodash 版本是什么?
  • laravel-mix 在其 package.json 中有一个 "lodash": "^4.17.4" 的依赖。

标签: php npm lodash laravel-5.5


【解决方案1】:

问题是我也在使用 Laravel Spark。 Spark 不使用resources/assets/js/bootstrap.js,而是在vendor/laravel/spark/resources/assets/js/spark-bootstrap.js 加载自己的引导程序。

Spark 的引导程序实际上需要 underscore 包而不是 lodash,因此会造成混淆。

window._ = require('underscore');

【讨论】:

  • 如果您明确要求 lodash 而不是依赖全局标识符,这不是更容易吗? import _ from 'lodash'; 应该在你想使用 lodash 的每个模块中就足够了。
  • Laravel 和 Spark 框架专门设置和使用window._,当然是全局的。我只是想重用现有的实例。我个人很乐意使用下划线,但是是的,将 lodash 导入另一个变量是一种选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 2010-12-07
相关资源
最近更新 更多