2014-09-23 6 views
0

Я попытался создать приложение с Node-Webkit и Sails.js. Мой API отлично работает, я получаю JSON, который мне нужен, но когда он интегрирован с Node-Webkit, он не запускает сервер.Как использовать Sails.js в узле-Webkit?

Мой package.json содержит:

{ 
   "name": "app-sails" 
   "main": "front/index.html" 
   "window": { 
     "toolbar": true, 
     "width": 1024, 
     "height": 600, 
     "title": "Test Application" 
   }, 
   "scripts": { 
     "start": "node server/app.js" 
   } 
} 

index.html главная страница, которую вы получаете, когда вы используете генератор angular.js YEOMAN и содержит вызовы к серверу, что у меня есть с sails.js. В сети работает, но не с Node-Webkit.

Когда я запускаю .nw, я могу видеть мои index.html правильно; но без данных он бросает сервер парусов.

Я ценю любую помощь.

ответ

0

Вы должны загрузить Sails-страницу, а не ваш index.html.

Одна вещь, которую вы могли бы сделать это (в вашем HTML)

window.location.href = "http://localhost:1337/"; 
+0

ОК, это направляется на паруса Startpage. Но я должен запустить паруса-приложение вручную. Любая идея, как запустить паруса-приложение при вызове nw.exe (Windows). «Сценарии» -Парт в пакете.json не работает. Благодарю. – liquid

3

Недавно я написал небольшую статью об этом, вы можете проверить его здесь: https://medium.com/unhandled-exception/sailsjs-and-node-webkit-4ccb8f810add

В основном вам просто нужно выполнить парусов использование требует, как только загрузится окно node-webkit. Это идет в вашем app.js файла:

exports.onLoad = function() { 
    var nwGUI = window.require('nw.gui'); 

    nwGUI.Window.get(window).on('loaded', function() { 
     if (loaded) { 
      return; 
     } 

     window.location.href = "http://localhost:1337/"; 
     loaded = true; 
    }); 

    try { 
     sails = require('sails'); 
    } catch (e) { 
     console.error('To run an app using `node app.js`, you usually need to have a version of `sails` installed in the same directory as your app.'); 
     console.error('To do that, run `npm install sails`'); 
     console.error(''); 
     console.error('Alternatively, if you have sails installed globally (i.e. you did `npm install -g sails`), you can use `sails lift`.'); 
     console.error('When you run `sails lift`, your app will still use a local `./node_modules/sails` dependency if it exists,'); 
     console.error('but if it doesn\'t, the app will run with the global sails instead!'); 
     return; 
    } 

    // Try to get `rc` dependency 
    try { 
     rc = require('rc'); 
    } catch (e0) { 
     try { 
      rc = require('sails/node_modules/rc'); 
     } catch (e1) { 
      console.error('Could not find dependency: `rc`.'); 
      console.error('Your `.sailsrc` file(s) will be ignored.'); 
      console.error('To resolve this, run:'); 
      console.error('npm install rc --save'); 
      rc = function() { 
       return {}; 
      }; 
     } 
    } 

    // Start server 
    sails.lift(rc('sails')); 
} 

и это на .html точки входа:

<html> 
    <head> 
     <title>Welcome!</title> 
    </head> 

    <body onload="process.mainModule.exports.onLoad();"> 
     <h1>hi!</h1> 
    </body> 
</html> 

Как вы можете видеть, большинство из этого файла app.jss в основном те же, что приходит , когда вы делаете

sails new 

Я просто обернутые все и выполнены, что обратный вызов OnLoad Если вы хотите, вы всегда можете проверить статью и полный GitHub репо для более детального VERSI кода.

Oh! И не забудьте обновить свой пакет.json и добавить:

{ 
     ... 
     "node-main": "app.js", 
     ... 
} 
Смежные вопросы