我正在使用Typescript寫一個Electron桌面應用程序。編譯後,項目組織看起來是這樣的:Electron和Typescript:我如何在運行時正確處理模塊?
- DIST
- HTML
- 的index.html
- 腳本
- ApplicationView.js
- 個ApplicationViewModel.js
- HTML
在index.html
我有這樣的腳本標籤:
<script src="../scripts/Application.js"></script>
我所有的文件從打字稿編譯ES2015(針對ES6和使用ES6模塊)和transpiled通過巴貝爾ES5。 ApplicationView.ts
看起來是這樣的:
///<reference path="../../typings/main.d.ts" />
import * as $ from "jquery";
import * as ko from "knockout";
import ApplicationViewModel from "./ApplicationViewModel";
$(document).ready(() => {
ko.applyBindings(new ApplicationViewModel("Hello!"));
});
這裏是ApplicationViewModel.ts
內容:
import * as ko from "knockout";
export default class ApplicationViewModel {
public greeting: KnockoutObservable<string>;
constructor(greeting: string) {
this.greeting = ko.observable(greeting);
}
}
電子拋出一個錯誤說,它不能找到該模塊./ApplicationViewModel
。然而,在調試器控制檯,我可以成功地導入模塊:
require("../scripts/ApplicationViewModel");
那麼,什麼是錯是顯而易見的。腳本標記有效地將Application.js
的內容複製到HTML文件中,更改模塊相對路徑的上下文。我的問題是我應該怎麼做?
我已經看到在腳本標記中使用require.js
。但是Electron在Node.js上運行。如果這是處理我的問題的正確方法,爲什麼我還需要另一個模塊加載器?我將如何確保兩人表現出色?
你能告訴我們'ApplicationViewModel.js'裏面有什麼嗎?很確定這是'出口默認'或什麼的問題 – KeitIG
我編輯了我的問題,包括該文件的內容。 – Craxal