VS Code AMD模块系统

时间:2017-05-14 20:51:45

标签: javascript node.js typescript electron amd

我正在使用TypeScript处理Electron应用程序,并且在尝试找出要使用的模块加载系统时遇到了一些问题。我一直在挖掘VS代码(因为许多人认为它是电子应用程序正确的“海报孩子”),以便更好地理解约定/做某些事情的最佳方法,我注意到他们正在使用AMD模块(在src下的tsconfig.json文件中,选项"module": "amd""moduleResolution": "classic""baseUrl": "."都已设置)并且它们似乎正在使用类似于需求的调用事情,例如将URL加载到BrowserWindow中,他们使用require.toUrl('vs/workbench/electron-browser/bootstrap/index.html');来获取要加载的完整URL。

从我(无可否认有限)的理解,这解决了我遇到的问题,我将TypeScript(位于src目录中)编译到输出目录(称为out),然后提供将.js文件发送给Electron来执行,这意味着我mainWindow.loadUrl(__dirname + '/index.html')之类的路径突然指向out/index.html而不是预期的src/index.html。但是,当我在VS代码项目中搜索对requirejs模块的任何引用时,除了包含此代码的require.d.ts文件之外,我找不到任何内容

declare var define: {
    (moduleName: string, dependencies: string[], callback: (...args: any[]) => any): any;
    (moduleName: string, dependencies: string[], definition: any): any;
    (moduleName: string, callback: (...args: any[]) => any): any;
    (moduleName: string, definition: any): any;
    (dependencies: string[], callback: (...args: any[]) => any): any;
    (dependencies: string[], definition: any): any;
};

declare var require: {
    toUrl(path: string): string;
    (moduleName: string): any;
    (dependencies: string[], callback: (...args: any[]) => any, errorback?: (err: any) => void): any;
    config(data: any): any;
    onError: Function;
    __$__nodeRequire<T>(moduleName: string): T;
};

我在我的项目中创建了一个包含此文件的打字文件,但是在运行我编译的JavaScript时出现define is not defined错误。我的问题是:VS Code如何能够将AMD模块与标准Node require模块一起使用,似乎没有使用像requirejs这样的东西,并且可以实现类似的模式来解决我在运行转换后的JavaScript代码时的路径问题输出目录?谢谢!

0 个答案:

没有答案