2016-08-17 2 views
0

UPDATE을 config.json 읽을 수 없습니다 : 문제가 나오는 것이 문제가 this PR가 제대로 (타이프 라이터, 웹팩)


에 의해 고정되는 이유의 도자기하고 정상 순수 자바 스크립트 방법이 없습니다 그것을 해결할 수 있기 때문에 수 server.tsTypeScriptWebpack입니다. 갠트의 대답을 확인하십시오. 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 server.ts 에서 읽은 파일 config.json

{ 
    "api": "123" 
} 

에게 있습니다 내가 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

'수입 구성;'. 그 노드에 있다면, 당신은 그것을 요구할 수 있습니다. const config = require ('./ config.json'). –

+0

@SwarajGiri 그러면 console.log (config);와 console.log (config.api);는'undefined '를 표시합니다. –

+0

저장소에'config.json'라는 파일이 보이지 않습니다. – Skam

답변

3

구성 파일이 웹팩으로 인라인, 그래서는 ES6 모듈의 사양은 다음과 문자열 당신이에서 예상대로되지 객체로 JSON을 반환 마디.

처음에 webpack으로 서버를 빌드하는 이유가 있습니까?

+0

흠, 공식적인 각도/유니버셜 스타터가 사용하기 때문에 특별한 이유가 없으므로 바로 퀵 스타트에 직접 사용합니다 –

+0

감사합니다! 나는 또한 console.log (config);가 실제로 json 대신에 문자열을 반환한다는 것을 알고있다. 그래서'JSON.parse'를 시도한 후 작동합니다. –

+0

@HongboMiao 그것은 정말 이상한 일입니다. 그것은 노드에서 실행하는 것에 대해 할 수있는 몇 가지 가정을 해치고 번들링 할 필요가없는 (컴파일 된) 컴파일 타임을 추가합니다. 내가 나중에 문제를 제기 할 수 있는지 알게 될 것이다. – Gant

1

UPDATE : 문제가

문제가 나오면 정상 순수 자바 스크립트 방법은 그 서버 때문에 될 수 해결할 수없는 이유의 도자기 수


this PR에 의해 고정되어 있습니다.
유형 스크립트웹 팩을 사용하고 있습니다. 갠트의 대답을 확인하십시오. 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 태그를 추가하십시오. 제목을보다 구체적으로 설명하십시오. "더 많은 다운 폰트를 피하기 위해 TypeScript에서 JSON 파일을 구문 분석 할 수 없습니다." – amingilani

+0

@amingilani 오, 당신이 그것을 가지고, 나는이 문제가 발생하는 이유라고 생각합니다! –

+0

@amingilani 내 답변을 보았을 때 상용구는 webpack을 사용하여 서버를 컴파일하고 typescript 용 모듈 로더는 자동으로 JSON을 인라인하기 때문에 ES6 동작을 얻습니다. 노드 요구는 실제로 사용되지 않습니다. – Gant

1

방법 1은 질문 구성과 일치하지 않으므로 잘못되었습니다. 문제의 webpack 구성은 json 파일의 raw-loader를 사용하는 반면이 답변은 json-loader를 사용합니다.

는 방법을 nodejs + 웹팩 테스트 2

두 가지 방법을 사용합니다.

방법 1 개

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

방법 './config.json'2

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

첫 번째는 상용구가 JSON 파일에'loader-raw'를 사용하기 때문에 작동하지 않습니다. – Gant

+0

@Gant 맞습니다. 나는 repo에 복제하지 않았고 json-loader를 사용하는 내 webpack 설정을 사용하고있었습니다. 내 잘못이야. –