2017-09-28 16 views
0

저는 webpack과 electron을 사용하고 있습니다. 스크립트 파일을 로컬 (app/scripts/scriptname.sh)에서 참조 할 수는 있지만, 프로덕션 배포시에는 Can't open app/components/scripts/scriptname.sh 오류가 발생합니다.webpack deploy에서 스크립트 파일을 참조하는 방법은 무엇입니까?

이것이 전자 종속적 문제인지 웹팩 문제인지는 분명하지 않습니다.

나는 이러한 사용하여 노드 child_process를 실행하고 있습니다 :

var ls = spawn('sh', ['app/components/scripts/scriptname.sh']);

내가 반드시 그냥 도움이 될 것입니다 자신의 폴더에 있어야 스크립트가 필요하지 않습니다.

+0

현재 폴더의 전체 경로를 제공하지 말고 기본 폴더의 절대 경로를 제공하십시오. – Inian

+0

예를 들어 주시겠습니까? 나는'./scripts /'를 사용해 보았는데 이것도 효과가 없다. – Rail24

+0

스크립트의 전체 경로가'/ home/foobar/foldername/app/components/scripts/scriptname.sh'에서 나온 경우라면'app/components/scripts/scriptname.sh'보다 절대 경로를 부여하십시오 – Inian

답변

0

스크립트의 전체 절대 경로를 입력해야합니다. 당신은 그래서 당신의 코드가 될 것 같은

app.getAppPath()

Returns String - The current application directory.

전자

app.getAppPath() API를 사용할 수 있도록하려면 : 그것은 당신의 특정 요구 사항을 충족하는 경우

var scriptAbsolutePath = app.getAppPath() + '/app/components/scripts/scriptname.sh'; 
var ls = spawn('sh', [scriptAbsolutePath]); 

을 또한 app.getPath(name) API을 볼 수있다.

+0

이것이 올바른 방향이라고 생각합니다. 나는'const {app} = require ('electron');을 사용하고 있습니다. 그러나 앱을 실행할 때'undefined' 오류의 getAppPath '속성을 읽을 수 없습니다.'라는 메시지가 나타납니다. 어떤 아이디어? – Rail24

+0

명명 된 모듈을 가져 오는 중괄호 방법이 아직 지원되지 않는다고 생각합니다. 다음을 수행 할 수 있습니다. const 전자 = 요구 ('전자'); const app = electron.app; – shashi

+0

나는'require ('electron'). remote.app'를 통해 앱을 찾는 것을 끝내지 만 기대했던 것만을 내게주지는 않았다. 분명히 "including"또는 "importing"하는 방법이있다. 전자 애플 리케이션 내에서 컴파일 된 스크립트 파일을 컴파일 된 애플 리케이션의 외부에 그들을 참조하지 않고도? – Rail24