2017-02-14 2 views
1

Ich habe Schwierigkeiten, eine ausführbare Verteilung meines Nodejs-Projekts zu erstellen. Ich möchte eine ausführbare Datei ähnlich wie wir mit ausführbaren jar mit Tomcat Embbeded senden. Ichwie Node-Compiler verwenden, "ERROR: versuchen, package.json Variablen zu verwenden, aber nicht Setup dafür"

lesen
Node Compiler is a command-line utility that compiles your Node.js application into a single executable file. 

in https://www.npmjs.com/package/node-compile

Nachdem es npm werfen installiert, habe ich versucht:

nodejs my-project-nodejs # node-compiler server.js 
....> ERROR: trying to use package.json variables, but not setup to do so! 

so, meine gerade Frage ist: was ich in meinem package.json bin fehlt?

Plus, dass ich MongoDb verwende. Ich glaube, dass ich kein Problem haben werde, wenn mein Kunde herunterlädt und nicht MongoDb das ausführbare nodejs-Projekt ausführt. Ich comenting es, weil ich in derselben URL lesen:

but by using default nexe, we could not easily produce a working binary which with with monogoose + express.js 

Soweit ich verstanden, da ich zu verwenden, versuche Knoten kompilieren anstelle von reinem nexe Ich will nicht Probleme mit MongoDB Gesicht.

server.js

// Load required packages 
var express = require('express'); 
var mongoose = require('mongoose'); 
var bodyParser = require('body-parser'); 
var ejs = require('ejs'); 
var session = require('express-session'); 
var passport = require('passport'); 
var userController = require('./controllers/user'); 
var authController = require('./controllers/auth'); 
var oauth2Controller = require('./controllers/oauth2'); 
var clientController = require('./controllers/client'); 

var cartaoController = require('./controllers/cartao'); 


mongoose.connect('mongodb://localhost:27017/my-db'); 

// Create our Express application 
var app = express(); 

// Set view engine to ejs 
app.set('view engine', 'ejs'); 

// Use the body-parser package in our application 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ 
    extended: true 
})); 

// Use express session support since OAuth2orize requires it 
app.use(session({ 
    secret: 'Super Secret Session Key', 
    saveUninitialized: true, 
    resave: true 
})); 

// Use the passport package in our application 
app.use(passport.initialize()); 

// Create our Express router 
var router = express.Router(); 

router.route('/cartoes') 
.post(cartaoController.postCartoes); 
// .post(authController.isAuthenticated, cartaoController.postCartoes); 

router.route('/users') 
    .post(userController.postUsers) 
    .get(authController.isAuthenticated, userController.getUsers); 

router.route('/clients') 
    .post(authController.isAuthenticated, clientController.postClients) 
    .get(authController.isAuthenticated, clientController.getClients); 

router.route('/oauth2/authorize') 
    .get(authController.isAuthenticated, oauth2Controller.authorization) 
    .post(authController.isAuthenticated, oauth2Controller.decision); 

router.route('/oauth2/token') 
    .post(authController.isClientAuthenticated, oauth2Controller.token); 

app.use('/api', router); 

app.listen(3000); 

package.json

{ 
    "name": "my-app-dmz", 
    "main": "server.js", 
    "dependencies": { 
    "bcrypt-nodejs": "0.0.3", 
    "body-parser": "^1.0.2", 
    "ejs": "^1.0.0", 
    "express": "^4.1.1", 
    "express-session": "^1.6.1", 
    "mongoose": "^3.8.8", 
    "node-rest-client": "^2.5.0", 
    "oauth2orize": "^1.0.1", 
    "passport": "^0.2.0", 
    "passport-http": "^0.2.2", 
    "passport-http-bearer": "^1.0.1", 
    "reqclient": "^2.1.0" 
    } 
} 

eines der Modelle

// Load required packages 
var mongoose = require('mongoose'); 

// Define our client schema 
var ClientSchema = new mongoose.Schema({ 
    name: { type: String, unique: true, required: true }, 
    id: { type: String, required: true }, 
    secret: { type: String, required: true }, 
    userId: { type: String, required: true } 
}); 

// Export the Mongoose model 
module.exports = mongoose.model('Client', ClientSchema); 
+0

ich noch sorgfältig auf diese Frage zu beantworten suchen. – DemeCarvO

Antwort

1

Wir waren gerade die gleiche Warnung, wenn ich meine app mit nexe zu bündeln .

Um dies zu lösen, musste ich einfach einen "nexe" Eintrag in meiner package.json Datei hinzufügen, da die nexe Dokumentation schlägt vor: https://github.com/nexe/nexe/tree/V1-EOL#packagejson-inclusion

"nexe": { 
    "input": "./bin/nexe", 
    "output": "nexe^$", 
    "temp": "src", 
    "browserify": { 
     "requires": [], 
     "excludes": [], 
     "paths": [] 
    }, 
    "runtime": { 
     "framework": "node", 
     "version": "5.6.0", 
     "js-flags": "--use_strict", 
     "ignoreFlags": true 
    } 
} 
+0

Ich denke, das Linkziel existiert nicht mehr, kann aber immer noch hier gefunden werden: https://www.npmjs.com/package/nexe#packagejson-inclusion –

+0

@ Xan-Kun Clark-Davis Danke für das Zeigen. Ich habe den Link zur nexe v1-Dokumentation aktualisiert. – TGrif

Verwandte Themen