red*_*ffi 5 node.js browserify typescript gulp
我的问题如下:
我使用 gulp+browserify 将我的 TypeScript 编译为可以在普通 HTML 页面上使用的 JavaScript,问题是我的类在浏览器上永远不可用:
VM633:1 Uncaught ReferenceError: Test is not defined
at <anonymous>:1:13
Run Code Online (Sandbox Code Playgroud)
这是我的打字稿文件:
VM633:1 Uncaught ReferenceError: Test is not defined
at <anonymous>:1:13
Run Code Online (Sandbox Code Playgroud)
这是我的 gulpfile
class Test {
public test(): void {
console.log("aa");
}
}Run Code Online (Sandbox Code Playgroud)
该文件编译没有问题,并包含在我的 index.html(编译后的 js 文件)中。
但是当我尝试:
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"));
});Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
VM633:1 Uncaught ReferenceError: Test is not defined
at <anonymous>:1:13
Run Code Online (Sandbox Code Playgroud)
我无法解决它,我已经阅读了很多,但没有找到任何明确的内容,我尝试了所有但没有任何效果。
这里缺少一些东西:
如果你希望你的类可以在模块之外访问,你必须export这样做:
export class Test {
// ...
}
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
或者,如果确实希望它可以全局访问,您可以将其附加到window对象:
// 在 Test.ts 文件中:
(window as any).Test = Test; // This can be useful when debuging. But don't do this in production code.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
857 次 |
| 最近记录: |