我现在有些困惑。这里是简单的条目main.js
文件:
var _ = require('lodash');
我在node_modules文件夹中安装了lodash,但它是出于开发目的。我不会将其包含在结果包中。
browserify -x lodash -e main.js
它几乎看起来很有效。不会引发错误,并且包中不包含lodash。但是当我尝试在浏览器中加载它时,我得到未捕获错误:无法找到模块'9TlSmm'。查看生成的文件,我看到了:
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="fu
nction"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Ca
nnot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,functi
on(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports
}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);re
turn s})({1:[function(require,module,exports){
var _ = require('lodash');
},{"lodash":"9TlSmm"}]},{},[1])
我不明白这里发生了什么。为什么它为lodash创建了别名9TlSmm
?是不是应该忽略这一点,并期望lodash将从另一个文件传递?
好的,我看到了这个问题。当我运行browserify -r lodash > vendor.js
并查看其中时,会为其指定相同的名称9TlSmm
。然而事实是,在我的真实vendor.js
中,我使用的是Bower而不是Npm的lodash。因此它被分配了另一个不匹配的别名。如何克服这个问题?