gpt4 book ai didi

node.js - Gulp + Browserify + TypeScript 到浏览器

转载 作者:搜寻专家 更新时间:2023-10-30 21:12:16 24 4
gpt4 key购买 nike

我的问题如下:

我使用 gulp+browserify 将我的 TypeScript 编译成可以在普通 HTML 页面上使用的 JavaScript,问题是我的类在浏览器上永远不可用:

VM633:1 Uncaught ReferenceError: Test is not defined
at <anonymous>:1:13

这是我的 TypeScript 文件:

class Test {
public test(): void {
console.log("aa");
}
}

这是我的gulp文件

var gulp = require("gulp");
var browserify = require("browserify");
var source = require('vinyl-source-stream');
var tsify = require("tsify");

gulp.task("default", function () {
return browserify({
//basedir: '.',
debug: true,
entries: ['app/Resources/typescript/Test.ts'],
cache: {},
packageCache: {}
})
.plugin(tsify)
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest("web/bundles/framework/js"));
});

文件编译没有问题,并包含在我的 index.html(编译后的 js 文件)中。

但是当我尝试时:

 var t = new Test();

我收到以下错误:

VM633:1 Uncaught ReferenceError: Test is not defined
at <anonymous>:1:13

我无法解决它,我已经阅读了很多,但我还没有找到任何明确的地方,我尝试了所有方法,但没有任何效果。

最佳答案

这里缺少一些东西:

如果您希望您的类可以在您的模块之外访问,您必须export它:

export class Test {
// ...
}

Browserify 在您定义的类之上创建函数。因此它无法在全局范围内访问(这是一件好事)。通常你会把它导入到另一个文件中并使用它:

// in any TS file that wants to use `Test` class. Make sure this is included in the gulp entries as well
import {Test} from "test";
var t = new Test();
console.log(t);

或者如果真的希望它可以全局访问,你可以将它附加到 window 对象:

//在 Test.ts 文件中:

(window as any).Test = Test; // This can be useful when debuging. But don't do this in production code.

关于node.js - Gulp + Browserify + TypeScript 到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46409735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com