Browserify 和 Babelify 给出 {classname} is not defined 错误
Browserify and Babelify give {classname} is not defined error
鉴于此 TS 文件:
export default class Rob {
Start(): void {
console.log("Hello, world!");
}
}
我正在使用如下所示的 G运行t 任务进行转换:
browserify: {
rob: {
src: "./rob/rob.js",
dest: "./wwwroot/rob.js",
options: {
transform: [["babelify", { "presets": ["@babel/preset-env"] }]]
}
}
}
我运行一个像这样的简单HTML文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test bed</title>
<script src="rob.js"></script>
<script>
window.addEventListener("DOMContentLoaded", function () {
var r = new Rob();
r.Start();
});
</script>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
这导致 Uncaught ReferenceError: Rob is not defined
我在 SO 上看到过几个这样的问题,但这些问题似乎与上下文的误用有关(例如,在不合适的情况下不这样做或不这样做)。这里上下文无关紧要;我只想在控制台中看到我的 console.log。
我的 package.json
看起来像这样:
{
"version": "1.0.0",
"name": "robtest",
"private": true,
"devDependencies": {
"@babel/core": "7.9.6",
"@babel/preset-env": "7.9.6",
"babel-preset-es2015": "7.0.0-beta.3",
"babelify": "10.0.0",
"grunt": "^1.1.0",
"grunt-browserify": "5.3.0"
}
}
我去过
- 核武器
node_modules
- 运行
npm install
(无警告或错误)
- 运行
grunt rob
(无警告或错误)
这会输出一个 JS 文件,在我看来是我想要的,包括这个片段:
var Rob = /*#__PURE__*/function () {
function Rob() {
_classCallCheck(this, Rob);
}
_createClass(Rob, [{
key: "Start",
value: function Start() {
console.log("Hello, world!");
}
}]);
return Rob;
}();
exports["default"] = Rob;
Chrome 还告诉我 rob.js
加载正常,当 HTML 页面加载后,我可以在源资源管理器中看到内容。
我的问题很简单:为什么在这个实例中引用错误?
编辑:作为对已接受答案的一点补充:
如果我编辑 ts 来调用它自己(作为它自己的入口点):
export default class Rob {
Start(): void {
console.log("Hello, world!");
}
}
const r = new Rob();
r.Start();
然后一切 运行 都是它应该做的 - 这非常适合我的用例。
鉴于此 TS 文件:
export default class Rob {
Start(): void {
console.log("Hello, world!");
}
}
我正在使用如下所示的 G运行t 任务进行转换:
browserify: {
rob: {
src: "./rob/rob.js",
dest: "./wwwroot/rob.js",
options: {
transform: [["babelify", { "presets": ["@babel/preset-env"] }]]
}
}
}
我运行一个像这样的简单HTML文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test bed</title>
<script src="rob.js"></script>
<script>
window.addEventListener("DOMContentLoaded", function () {
var r = new Rob();
r.Start();
});
</script>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
这导致 Uncaught ReferenceError: Rob is not defined
我在 SO 上看到过几个这样的问题,但这些问题似乎与上下文的误用有关(例如,在不合适的情况下不这样做或不这样做)。这里上下文无关紧要;我只想在控制台中看到我的 console.log。
我的 package.json
看起来像这样:
{
"version": "1.0.0",
"name": "robtest",
"private": true,
"devDependencies": {
"@babel/core": "7.9.6",
"@babel/preset-env": "7.9.6",
"babel-preset-es2015": "7.0.0-beta.3",
"babelify": "10.0.0",
"grunt": "^1.1.0",
"grunt-browserify": "5.3.0"
}
}
我去过
- 核武器
node_modules
- 运行
npm install
(无警告或错误) - 运行
grunt rob
(无警告或错误)
这会输出一个 JS 文件,在我看来是我想要的,包括这个片段:
var Rob = /*#__PURE__*/function () {
function Rob() {
_classCallCheck(this, Rob);
}
_createClass(Rob, [{
key: "Start",
value: function Start() {
console.log("Hello, world!");
}
}]);
return Rob;
}();
exports["default"] = Rob;
Chrome 还告诉我 rob.js
加载正常,当 HTML 页面加载后,我可以在源资源管理器中看到内容。
我的问题很简单:为什么在这个实例中引用错误?
编辑:作为对已接受答案的一点补充: 如果我编辑 ts 来调用它自己(作为它自己的入口点):
export default class Rob {
Start(): void {
console.log("Hello, world!");
}
}
const r = new Rob();
r.Start();
然后一切 运行 都是它应该做的 - 这非常适合我的用例。