我有一个定义了一个名为App
类的test.js
脚本,它是由HTML文件加载的,一切正常。
当我使用browserify或webpack从test.js
创建一个testBundle.js
捆绑包时,testBundle.js
中的App
类似乎不再被定义。
我应该如何编写代码或给browserify哪些选项以便在捆绑后像以前一样从捆绑包中定义并使用App
?
打包后我得到的错误是:
Uncaught ReferenceError: App is not defined
文件如下:
<html>
<script src="testBundle.js"></script>
<script>
var app = new App();
</script>
</html>
test.js:
'use strict';
class App {
constructor() {
console.log("App ctor")
}
}
构建打包文件的命令:
browserify -t [ babelify --presets [ es2015 ] ] test.js -o testBundle.js
在查看bundle内部时,我发现该应用实际上是私有的。
testBundle.js
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.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]);return s})({1:[function(require,module,exports){
'use strict';
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var App = function App() {
_classCallCheck(this, App);
console.log("App ctor");
};
},{}]},{},[1]);
所有这些都使用来自浏览器的JavaScript,ES6。