2016-08-17 4 views
0

UPDATEをconfig.json読み取ることができません。問題が出てくるという問題がthis PRが正しく(活字体、WebPACKの)


によって固定されている理由の陶器うと、通常の純粋なJavaScriptの方法はできませんそれが原因である可能性があります。server.tsを使用しています。TypeScriptWebpackです。ガントの答えを確認してください。 githubのthis issueを追跡します。

私はangular/universal-starterをスターターとして使用しています。しかし、

{ 
    "api": "123" 
} 

import * as config from '../config.json'; 
// const config = require('../config.json'); will be same result 
console.log(config); 

それはターミナルでこれを示しています。私は、ファイルconfig.json

{ 
    "api": "123" 
} 

私はconfigでserver.tsを読んだときがあります私がconfig.apiで読んでみると、server.ts

import * as config from '../config.json'; 
// const config = require('../config.json'); will be same result 
console.log(config.api); 

これは、undefinedを示しています。

これは私のフォルダ構造です(他の部分はangular/universal-starterと同じです)。

my-app 
    - config.json 
    + src 
    - server.ts 

私がアプリを起動するとき、私はnpm startを使います。

これはどうしてですか?おかげ

+0

'./config.json' から 'インポート設定; '。そのノード内にあれば、それを要求することができます。 const config = require( './ config.json')。 –

+0

@SwarajGiri 'console.log(config);'と 'console.log(config.api);'は 'undefined 'を表示します –

+0

そのリポジトリに' config.json'という名前のファイルはありません。 – Skam

答えて

3

あなたの設定ファイルはのWebPACKによってインラインので、あなたから期待としては、ES6モジュールの仕様を以下の文字列ではなくオブジェクトとしてJSONを返していますノード。

最初にwebpackを使用してサーバーを構築する理由はありますか?

+0

まあ、公式の角度/ユニバーサルスターターがそれを使用しているからといって特別な理由はありません。ただちにクイックスタートに直接使用します –

+0

ありがとう!私はまた、 'console.log(config);'が実際にjsonの代わりに文字列を返すことも知っています!そのため、私は 'JSON.parse'を試してみたのですが、それは –

+0

@HongboMiaoです。これは本当に奇妙なことです。ノードの下で実行することができるいくつかの仮定を破り、バンドルする必要がない(コンパイルした)もののコンパイル時間を追加します。後で問題が起こるかどうかがわかります。 – Gant

1

UPDATE:問題は

問題が出てくると、通常の純粋なJavaScriptの方法は、それがそのサーバーので、可能性が解決できないということの理由の陶器て


this PRによって固定されています。 ts
は、 タイプスクリプトWebpackを使用しています。ガントの答えを確認してください。 githubの this issueを追跡します。

私は問題を発見:

import * as config from '../config.json'; 
// const config = require('../config.json'); also works 


const json = JSON.parse(config); // <- need this line 
console.log(json.api); // 123 
+0

私はそれを考えていたが、それはJSで真実であってはならない。たぶんそれはTypescriptものです。あなたの質問にTypescriptタグを追加してください。タイトルをよりわかりやすくする。 "より多くのdownvotesを避けるために" TypeScriptでJSONファイルを解析できません "。 – amingilani

+0

@amingilaniああ、あなたはそれを持って、私はこの問題が起こる理由だと思う! –

+0

@amingilaniボイラープレートはWebpackを使用してサーバーをコンパイルし、typescriptのモジュールローダーはJSONを自動的にインライン化するので、ES6の動作を得ることができます。ノードrequireは決して実際には使用されません。 – Gant

1

方法1は質問構成と一致しないため、間違っています。問題のwebpack設定は、jsonファイルのrawローダーを使用しますが、この回答はjson-loaderを使用しています。

方法をnodejs + 1のWebPACKでテスト2

両方の方法を使用します。

方法1

var config = require(__dirname + '/config.json'); 
console.log(config['api']); 

方法2

var config = JSON.parse(fs.readFileSync(__dirname + '/config.json', 'utf8')); 
console.log(config.api); 
+0

最初のものは、定型句がJSONファイルに 'loader-raw'を使用するため動作しません。 – Gant

+0

@Gantあなたは正しいです、私はレポにクローンしなかったし、json-loaderを使用する自分のwebpack設定を使用していました。私の悪い。 –