Webpack2ではextensionsに空文字を指定できない
npm install webpack
で Webpack2 がインストールされるようになっていたので、試して見たところエラーが出たのでメモ。
エラー
Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema. - configuration.resolve.enforceExtension should be a boolean.
解決策
extensions
にemptyな ''
を指定してはいけない。
ソースコード
エラー時のソースコード(一部抜粋)
var webpack_config = { resolve: { extensions: ['', '.webpack.js', '.ts', '.tsx', '.js'] } }
修正後ソースコード
var webpack_config = { resolve: { extensions: ['', '.webpack.js', '.ts', '.tsx', '.js'] } }
参考URL
.NET Core でMySQLに接続する
.NET Core にてMySQLに接続したくてその方法を調べてみた。
参考にした記事の手順でできるけど、1点か注意が必要な部分があった。
注意点
portが 3305
になっている
参考
HowTo: Starting with MySQL EF Core provider and Connector/Net 7.0.4 | InsideMySQL.com
.NET Core開発で手動でのnuget追加方法
.NET Core を使った開発でVisualStudioを使えない場合Nugetを調べるのが大変だと思います。
MacだとRiderがあるからNugetの参照も上手くいくと思ってたんですが、自分の環境だと、RiderでNugetを検索できるけど参照追加しようとすると失敗してしまうという状態でした。 GUIからできないなら自力で書くしかないということで調べてみると自分が探していた情報が出てきました。
- .NET Core で使いたいClassをココで調べる。
docs.microsoft.com - 1.で調べた Assembly を元にNugetを検索する。
NuGet Gallery | Home - csproj にパッケージ名とバージョンを追記する
※ 詳細は下記参考ページに載っています。
参考
VisualStudio2015Enterpriseでパッケージが読み込まれない
Visual Studio 2015 Enterprise をインストールして、プロジェクトを作成した時に下記のエラーが表示されました。
'XamarinShellPackage' パッケージは正しく読み込まれませんでした。
参考のURLを見てみると、 http://xvs.xamarin.com/Xamarin.VisualStudio_3.11.524.msi をインストールすると解決すると書いてあったので試してみたところ無事解決しました。
参考
async function でfetchをラップする関数を作る
javascriptで async function の使い方を勘違いしていたようなのでメモ。
先に正しく動く例
export class ApiWrapper { public async getResult = (searchText: string) => { let myHeaders = new Headers({ 'Token': '' }); const response = fetch(this.apiUrl + searchText, { method: 'GET', headers: myHeaders, mode: 'cors', credentials: 'include' }); if (response.status >= 200 && response.status < 300) { let data = await response.json(); return data; } else { var error = new Error(response.statusText); throw error } } }
呼び出し側
let hoge = async () => { const apiWrapper = new ApiWrapper(); const fuga = await apiWrapper.getResult('検索したいワード'); console.log(fuga); }
何を勘違いしていたのか
functionの前に async を付けて、戻り値は Promiseにすればいいと思っていた。
export class ApiWrapper { // タグ一覧取得 public async getResult = (searchText: string) => { let myHeaders = new Headers({ 'Token': '' }); return fetch(this.apiUrl + searchText, { method: 'GET', headers: myHeaders, mode: 'cors', credentials: 'include' }).then( (response) => { if (response.status >= 200 && response.status < 300) { return response.json(); } else { var error = new Error(response.statusText); throw error } }).then( (data: any) => { console.log('success'); return data; }).catch( (error) => { console.log('request failed', error); throw error; }); } }
と書いて、Promiseを返してあげればいいのではと思ってましたが、この場合、呼び出し側では下の様に書かなければいけなくて冗長だなと思ってました。
let hoge = async () => { const apiWrapper = new ApiWrapper(); apiWrapper.getTagList('tag name') .then( (response) => { console.log(response); }) .catch( (error) => { console.log(error); }); }
でもこれは勘違いで、 ApiWrapper は Promise を返す Promise になっていただけでした。
これは、 c# だと Task<Task<T>>
になっている、と言われてなるほどと思いました。