2016-10-07 4 views
0

gulpからdjangoサーバを実行しようとしています。私は仮想環境をアクティブにして(大まかに)管理してからサーバを起動しましたが、djangoサーバの出力/エラーは表示されません。どのように私はgulpを使用して表示させることができますか?gulpとログを記録したdjangoサーバを実行しています

gulpfile.js

var pjson = require('./package.json'); 

// Run django server 
var cmd = 'workon switcher5' 
gulp.task('runServer', function() { 
    exec('~/virtualenvs/' + pjson.name + '/bin/python manage.py runserver', function (err, stdout, stderr) { 
    console.log(stdout); 
    console.log(stderr); 
    }); 
}); 

注サーバが正常に動作が。私は、コンソールにエラーを取得しています:

/bin/sh: /Users/User/virtualenvs/switcher5/bin/python: No such file or directory 

(ゴクゴク経由ジャンゴ・サーバではなく実行すると、通常どおりに動作します。)

を私が代わりにプロセスを生成しようとした:

gulp.task('runServer', function(){ 
    console.info('starting django server'); 
    var PIPE = {stdio: 'inherit'}; 
    spawn('~/virtualenvs/' + pjson.name + '/bin/python', ['manage.py', 'runserver'], PIPE); 
}); 

しかしものの、spawn('python', ['manage.py', 'runserver'], PIPE);端末から(実際に上記を経由して実行する前にvirtualenvを起動できない) パスの何が問題なのかわからない

端末から実行すると出力が出ますが、Djangoサーバ(304など)からのエラーだけと思われますが、成功したリクエストは表示されません。

+0

正しいpythonインタープリタのパスは正しいですか? – Railslide

+0

はいそうですが、サーバーを実行しています。 – Yunti

答えて

0

私はしばらくの間、この正確なコンセプトに苦しんできました。私が見た例では、すべてのものが1つのgulpfile.jsにあります。ここではモジュール化されたものがあります。さらに、以前のDjangoプロジェクトで作業していましたが、Two Scoopsの設定ファイルを分割する方法に従うと、次のプロジェクトで問題が発生しました。

I ついにそれは以下のファイル(Windowsベースのマシン)を作成し、bashのコマンドラインから「ゴクゴク時計」を実行することにより、作業ました:

Basicプロジェクトフォルダ構造:

root folder 
|_ project folder 
|_ config folder 
|_ gulp 
    |_ tasks 
     runserver.js 
     watch.js 
|_ gulpfile.js 

gulpfile.js:

// Load gulp script modules 

require('./gulp/tasks/runserver'); 
require('./gulp/tasks/watch'); 

runserver.js

// Starts python django server 

// Import packages 
var gulp = require('gulp'), 
spawn = require('child_process').spawn; 

// Start the Django runserver 
gulp.task('startDjango', function(cb){ 
    var projDir = 'C:\\<<project folder>>' 
    var envDir = 'C:\\<<virtual environment directory>>' 
    var cmd = spawn('python', [projDir + '\\manage.py', 'runserver'], 
      {cwd: envDir, stdio: 'inherit'} 
      ); 
    cmd.on('close', function(code) { 
    console.log('startDjango exited with code ' + code); 
    cb(code); 
    }); 
}); 

watch.js:

// Kicks off Django server, opens and syncs browser upon changes 

// Import packages 
var gulp = require('gulp'), 
watch = require('gulp-watch'), 
browserSync = require('browser-sync').create(); 

// WATCH for changes to files 
gulp.task('watch', function(){ 
    // Start python django server 
    gulp.start('startDjango'); 

    // Sync browsers to python runserver 
    browserSync.init({ 
    notify: false, 
    localOnly: true, 
    proxy: { 
     target: 'http://localhost:8000/', 
    }, 
    port: process.env.PORT || 8000, 
    }); 

    // Refresh the browser whenever any HTML file is changed  
    watch('./**/*.html', function(){ 
    browserSync.reload(); 
    }); 

... // Other watch activities here 

}); 

希望、これは苦労しています誰に役立ちます。 :)

関連する問題