2016-07-08 3 views
1

나는 http://gregblogs.com/how-django-reactjs-and-browserify/을 따르려고합니다. collectstatic을 얻기 위해 몇 개의 농구를 통과했지만 지금은 오류없이 실행됩니다. 그러나 내 반응 구성 요소가 포함 된 페이지를로드하려고하면 또 다른 컴파일 프로세스가 시작됩니다 (collectstatic은 모든 것을 사전 처리하고 런타임 컴파일 시간은 아무 것도 없을 것이라고 생각했습니다). 지금 작동하게하려면 해킹이 필요합니다 (https://github.com/j0hnsmith/django-pipeline-browserify/issues/14). 그러나이 패치를 적용한 후에도 불행히도이 컴파일 작업은 오류가 발생합니다. 명령이 이제는 정상적으로 보일지라도 : 실행하면Django 파이프 라인을 사용하여 Windows에서 브라우저

C:\Users\JohnSmith\node_modules\.bin\browserify.cmd -t babelify --deps C:\Users\JohnSmith\Documents\test\company\static\dashboard\js\react_test_dashboard_widget.browserify.js 

오류없이 실행되며 종속성 JSON이 생성됩니다. 같은 명령이 장고/파이프 라인에 의해 하위 프로세스로 실행되면 오류 밖으로 어떻게 그것을 극복하는

Error: Cannot find module ' babelify' from 'C:\Users\JohnSmith\Documents\test\company 

말?

packages.json 니펫을

"dependencies": { 
    "babel-cli": "^6.6.5", 
    "babel-preset-es2015": "^6.6.0", 
    "yuglify": "^0.1.4", 
    "babelify": "^7.3.0", 
    "browserify": "^13.0.1", 
    "jquery": "^2.2.0", 
    "react": "^15.2.0" 
}, 
"devDependencies": { 
    "babel-plugin-transform-class-properties": "^6.10.2", 
    "babel-plugin-transform-react-jsx": "^6.8.0", 
    "babel-preset-es2016": "^6.11.0", 
    "babel-preset-react": "^6.11.1" 
} 

요구 사항은 니펫을 : (BTW https://github.com/j0hnsmith/django-pipeline-browserify/issues/15)

... 
django-pipeline==1.6.6 
django-pipeline-browserify==0.4.1 
futures==3.0.5 
... 

일부 설정 :

PIPELINE["CSS_COMPRESSOR"] = "pipeline.compressors.NoopCompressor" 
PIPELINE["JS_COMPRESSOR"] = "pipeline.compressors.NoopCompressor" 
PIPELINE['SASS_BINARY'] = 'C:\\Ruby22-x64\\bin\\sass.bat' 
PIPELINE['BABEL_BINARY'] = 'c:\\Users\\JohnSmith\\node_modules\\.bin\\babel.cmd' 
PIPELINE['BROWSERIFY_BINARY'] = 'c:\\Users\\JohnSmith\\node_modules\\.bin\\browserify.cmd' 
PIPELINE_BROWSERIFY_BINARY = PIPELINE['BROWSERIFY_BINARY'] 

if DEBUG: 
    PIPELINE["BROWSERIFY_ARGUMENTS"] = '-t babelify' 
    PIPELINE_BROWSERIFY_ARGUMENTS = PIPELINE["BROWSERIFY_ARGUMENTS"] 

(! 마지막이 컴파일러를 위해 필요했다) 내 시스템 : Win 10, Python 2.7, Django 1.8

것은 내가


업데이트를 지정해야 밖의 무엇을 말해 : 오류 메시지가 노드 자체에서 온다. 아래의 호출 스택을 참조하십시오.

CompilerError: ['c:\\Users\\JohnSmith\\node_modules\\.bin\\browserify.cmd', '-t c:\\Users\\JohnSmith\\Documents\\test\\node_modules\\babelify\\index.js', u'--deps C:\\Users\\JohnSmith\\Documents\\test\\company\\static\\dashboard\\js\\react_test_dashboard_widget.browserify.js'] exit code 1 
Error: Cannot find module ' c:\Users\JohnSmith\Documents\test\node_modules\babelify\index.js' from 'C:\Users\JohnSmith\Documents\test\company' 
    at c:\Users\JohnSmith\node_modules\resolve\lib\async.js:46:17 
    at process (c:\Users\JohnSmith\node_modules\resolve\lib\async.js:173:43) 
    at ondir (c:\Users\JohnSmith\node_modules\resolve\lib\async.js:188:17) 
    at load (c:\Users\JohnSmith\node_modules\resolve\lib\async.js:69:43) 
    at onex (c:\Users\JohnSmith\node_modules\resolve\lib\async.js:92:31) 
    at c:\Users\JohnSmith\node_modules\resolve\lib\async.js:22:47 
    at FSReqWrap.oncomplete (fs.js:82:15) 

이 어쩌면 문제가 있음을 나에게 조언 : 나는 (이 또한 응용 프로그램에 명령 줄에서 잘 작동하지만 잘) 명시 적으로 대신 모듈 이름의 변환 JS 파일을 지정하려고 여기에 참고 노드 자체가 t 매개 변수를 캡처하고 browserify으로 전달하지 않습니다. 확실히이 문제가 중요 할 수 있습니다

https://github.com/j0hnsmith/django-pipeline-browserify/issues/14 내가

command = (
     getattr(settings, 'PIPELINE_BROWSERIFY_BINARY', '/usr/bin/env browserify'), 
     getattr(settings, 'PIPELINE_BROWSERIFY_ARGUMENTS', ''), 
     "--deps %s" % self.storage.path(infile), 
    ) 

으로 https://github.com/j0hnsmith/django-pipeline-browserify/blob/master/pipeline_browserify/compiler.py#L55

command = "%s %s %s --deps %s" % (
     getattr(settings, 'PIPELINE_BROWSERIFY_VARS', ''), 
     getattr(settings, 'PIPELINE_BROWSERIFY_BINARY', '/usr/bin/env browserify'), 
     getattr(settings, 'PIPELINE_BROWSERIFY_ARGUMENTS', ''), 
     self.storage.path(infile), 
    ) 

를 오버라이드 '파이프 라인 컴파일러 코드는 튜플을 기대 원인이된다. 그는 원래 코드는 하나의 완전한 문자열을 받았지만, 그것은, https://github.com/jazzband/django-pipeline/blob/master/pipeline/compilers/init.py#L108

argument_list = [] 
    for flattening_arg in command: 
     if isinstance(flattening_arg, string_types): 
      argument_list.append(flattening_arg) 
     else: 
      argument_list.extend(flattening_arg) 

이 나중에 재앙으로 이어질 것이라고보고 그들 모두 인수 것을 생각하고, 개별 문자로 해부 :

CompilerError: [Error 87] The parameter is incorrect 

답변

0

제 동료는 OSX에서도 작동하도록 노력했지만 우리는 포기했습니다. is_outdated을 단락하여 항상 true를 반환했습니다.is_outdated에는 그에 대한 설명에 대한 정보가 일부 포함되어 있습니다 (https://github.com/j0hnsmith/django-pipeline-browserify/blob/master/pipeline_browserify/compiler.py#L41) :

"경고 : 실제로 컴파일하는 것만 큼 시간이 오래 걸릴 수 있습니다. 따라서 강제로 더 잘 수행 할 수 있습니다. 매번 컴파일. "

단락 회로는 컴파일러를 정의하고 등록하는 것입니다.

class BrowserifyCompiler(BrowserifyCompiler): 
    def is_outdated(self, infile, outfile): 
     return True 

최근 코멘트 그리고 아무도 이것에 대해 불평하는 단순한 사실은 전에 나에게 프로젝트의 상태에 대해 궁금합니다

PIPELINE['COMPILERS'] = (
'pipeline.compilers.sass.SASSCompiler', 
# 'pipeline_browserify.compiler.BrowserifyCompiler', 
'company.utils.compilers.BrowserifyCompiler', 
... 
) 

...

https://github.com/j0hnsmith/django-pipeline-browserify/issues/14

+0

나는 다음입니다 동일한 자습서와 collectstatic 작업을 얻을 수없는 것. 다음과 같은 오류가 발생합니다 : "django/contrib/staticfiles/management/commands/collectstatic.py", 줄 122,원본 경로, processed_path, 프로세서에서 처리 : 파일 "pipeline/storage.py", 24 행 , post_process에서 output_file = package.output_filename output_filename 파일의 "pipeline/packager.py"파일에서 return self.config.get ('output_filename') AttributeError : 'tuple'객체에 'get'속성이 없습니다. 비슷한 오류가 발생했는지 궁금하십니까? – Rads

+0

벨을 울리지 않는 @ 라디오. 귀하의 파이프 라인 구성에 결함이있는 것 같습니다. 이것은 (튜플을 제공하거나 예상했을 때 튜플을 얻지 못할 때) 누락 된 쉼표 또는 쉼표로 인해 발생할 수 있습니다. 이것은 어딘가에 여분의 쉼표처럼 보이게됩니다. 질문에 구성을 게시하고 여기에 링크를 붙여서 내가 따를 수 있도록하십시오. 또는 그것을 Gist에 넣고 링크를 말해주십시오. –

+0

@Rads 당신의 경우'browserify '가 관련되어 있거나'파이프 라인'만 있습니까? 방정식에'browserify '를 넣었을 때 이미 작동중인 파이프 라인 구성을 가지고 있습니다. –