ASP.NET Core + React + IE11…?

Promise の件

Internet Explorer (IE11 含む) には Promise がありません。
つまり、fetch(...) からの .then(...) を使うような、React 時代の Ajax 気取りなページは全滅です。

しかしながら、
この Promise を webpack へ正しく組み込む方法を提示しているサイトが見つかりませんでした。

webpack.config.vendor.js にて
 
1 箇所目
entry.vendor に es6-promise を追加。配列内の場所はどこでも良いです。
entry: {
vendor: ['es6-promise', 'bootstrap', 'bootstrap/dist/css/bootstrap.css', 'event-source-polyfill', 'isomorphic-fetch', 'react', 'react-dom', 'react-router-dom', 'jquery'],
},

 
2 箇所目
Promise を広域変数として展開します。
plugins: [
extractCSS,
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
Promise: ['es6-promise', 'Promise']
}),

つぎに wwwroot\dist\vendor.js を作り直して欲しいのです。
まず wwwroot\dist を削除する必要があります。
rmdir wwwroot\dist /s
その後、ビルドします。

キャッシュの件

IE はご丁寧にも GET /... を強制キャッシュしますんでね…
サーバーサイドで対処(Cache-Control: no-cache)するか、
クライアントサイドで対処($.ajaxSetup({cache: false});)するか。

今回は、これで:
[ResponseCache(NoStore = true)]

[HttpGet("[action]")]
[ResponseCache(NoStore = true)]
public IEnumerable<EventName> List()
{
return db.EventName;
}

コメント

このブログの人気の投稿

aspNetCore mvc superPad 備忘録編

gulpfile.ts (122,1): Expected 1-2 arguments, but got 3. (2554)

Error in plugin 'gulp-gm' Error: write EOF