私はaureliaプロジェクトで、typescriptを使ってjavascriptを作成しています。今度は別のカスタムライブラリ 'hash-set'(jspm install npm:hash-set --save
を使用)を追加しようとしました。しかし、私は実際にこのパッケージを使用することはできません(loaderとしてsystemjsを使用して)。typescript/systemjsでハッシュセットモジュールをインポートできませんか?
マイドキュメント構造が似ている:
\
dist\
src\
app.html
app.js
main.js
jsp_packages\
npm\
[email protected]\
node_modules\
index.html
config.js
package.json
tsconfig.json
重要なファイル(私が思うに、私は何かを逃した場合、コメントに明記してください):
index.htmlを
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body aurelia-app="src/main">
<script src="jspm_packages/system.js"></script>
<script src="config.js"></script>
<script>
SystemJS.import('aurelia-bootstrapper');
</script>
</body>
</html>
app.ts これは事前ビルドされた手順としてapp.jsにコンパイルされます。 es2015をターゲット構成として使用する。
import {hashSet} from 'hash-set';
export class App {
public myText: string;
hashFn(value) {
return value.toString();
}
constructor() {
alert("oh");
const h = hashSet;
const StringSet = hashSet(this.hashFn);
alert('oh2');
}
}
config.jsの
System.config({
defaultJSExtensions: true,
transpiler: false,
paths: {
"*": "dist/*",
"github:*": "jspm_packages/github/*",
"npm:*": "jspm_packages/npm/*"
},
meta: {
"bootstrap": {
"deps": [
"jquery"
]
}
},
map: { /*lots of aurelia and other library stuff*/
"hash-set": "npm:[email protected]"
}
}
});
そして、私は上記のコードを実行しようとすると、それはまた今度{"jspm":{"dependencies":"hash-set": "npm:[email protected]^1.0.1"}}}
@package.json
に記載されています(typescriptですが、作成済みのステップとしてapp.jsしてコンパイル) 、期待どおりapp.js/app.ts
が読み込まれます。 (ハッシュセット固有のコードを率直に削除すると、すべてが期待通りに機能します)。
しかし、建設中に "ああ"が表示されますが、 "あまり"は決してありません。コードをデバッグすると、「hashSet」が「未定義」であることが示されます。そのシステムjはハッシュセットを正しく含んでいないと私は信じています。 何か不足していますか?
編集:私は
hash_set_1.hashSet
があることを期待し、実際にタイプのある define(["require", "exports", "hash-set"], function (require, exports, hash_set_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class App {
hashFn(value) {
return value.toString();
}
constructor() {
alert('oh');
const h = hash_set_1.hashSet;
const StringSet = hash_set_1.hashSet(this.hashFn);
alert('oh2');
}
}
exports.App = App;
});
//# sourceMappingURL=app.js.map
hash_set_1
、デバッグ中:生成されたJS(app.js
)を掘り下げるは、私は奇妙な何かに気づくファイル。実際に手動でhash_set_1.hashSet
を使用しないようにjavascriptを編集するだけでなく、ちょうどhash_set_1
が動作します。
試行 import hashSet from 'hash-set';
(通知の不足{})は、生成されたjavascriptの違反行をまだ正しくない(デフォルトは定義されていません)const StringSet = hash_set_1.default(this.hashFn);
に変更します。
を' hashSet'が行 'constのStringSet = HashSetの(this.hashFn)で定義されていない場合:あなたが行う場合、それが動作するはず
コンソールの大きな脂肪エラー。コンソールにエラーが表示されますか? – Louis
@ルイス 'AggregateError \tは、\tを取得します。\tを取得します。\t(匿名機能)\t未知(約束しています)エラー:アプリケーションを呼び出す際にエラーが発生しました。 aurelia-pal.js:38の内部エラーをチェックしてください。あまり役に立ちませんが、内側のエラーを詳しく調べると、「 'hashSet'」は関数ではありません。 – paul23