Babelify错误无法找到模块' lodash / array / compact'

时间:2016-02-17 21:32:56

标签: gulp browserify babeljs

我使用带有Gulp系统的Browserify构建器从重新配置JSX编译器转移到Babel编译器(Babelify)。 现在我收到了这个错误:

[00:17:25] Error in bundle:
[00:17:25] Error: Cannot find module 'lodash/array/compact' while parsing file:
C:\MotoGipsy\repository\motogipsy\client-trunk\public\src\scripts\app.js
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (C:\MotoGipsy\repository\motogipsy\client-trunk\node_m
odules\babel-preset-es2015\node_modules\babel-plugin-transform-es2015-function-n
ame\node_modules\babel-types\lib\index.js:42:27)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)

我正在使用Gulp配置:

var browserify = require('browserify'),
    babelify = require('babelify');

module.exports = function(config){
    // Create a browserify instance with proper options
    var bundler = browserify({
        cache: {}, packageCache: {}, fullPaths: true,
        debug: config.browserify.debug,
        paths: config.browserify.paths
    })
    .transform(babelify, {presets: ["es2015", "react"]});

    // Add the entry module to the bundler
    bundler.add('./public/src/scripts/app.js');

    return bundler;
};

这是package.json config:

  "dependencies": {
    "babel": "^6.5.2",
    "marked": "0.3.5",
    "es5-shim": "^4.0.5",
    "extend": "^2.0.0",
    "gulp": "^3.8.10",
    "gulp-autoprefixer": "^2.0.0",
    "gulp-concat": "^2.4.2",
    "gulp-cssmin": "^0.1.6",
    "gulp-sass": "^1.2.4",
    "gulp-shell": "^0.2.11",
    "gulp-sourcemaps": "^1.3.0",
    "gulp-uglify": "^1.5.2",
    "gulp-util": "^3.0.1",
    "gulp-watch": "^3.0.0",
    "jquery": "^2.2.0",
    "react": "^0.14.7",
    "react-router": "2.0.0",
    "reflux": ">=0.3.0",
    "watchify": "^2.2.1",
    "browserify-shim": "~3.8.9",
    "react-textarea-autosize": "3.3.0",
    "react-autolink-text": "2.0.0",
    "core-js": "2.1.0"
  },
  "devDependencies": {
    "babel-preset-es2015": "^6.5.0",
    "babel-preset-react": "^6.5.0",
    "babelify": "^7.2.0",
    "jest": "^0.1.37",
    "jest-cli": "^0.2.1",
    "lodash": "^4.5.0"
  },

我对这种情况感到很困惑。请让我知道为什么这种依赖不适用于Babel插件?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

就我而言,原因在于过时的NPM。所以:

$ sudo npm install -g npm

解决了我的问题。

不再只是再次运行npm install以重新安装依赖项

答案 1 :(得分:0)

我遇到过类似的问题。在我的gulp文件中,它被用作

var compact = require('lodash/array/compact')
compact(assetTasks.map(matchFilter))

但是使用新的lodash,你不能像以前一样使用紧凑型模块。所以下面解决了我的问题。

var array = require('lodash/array')
array.compact(assetTasks.map(matchFilter))