如何使用节点编译器,得到“错误:尝试使用package.jsonvariables,但没有安装”

我正在努力创build我的nodejs项目的可执行分发。 我想发送一个可执行文件,就像我们用Tomcat包含的可执行文件jar一样。 我读

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

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

安装后把它扔npm,我试过了:

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

所以,我直接的问题是:我在package.json中缺less什么?

另外,我正在使用MongoDb。 我相信我不会面对问题,如果我的消费者下载和isntall MongoDb开始执行可执行的nodejs项目。 我正在考虑它,因为我读了相同的url:

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

据我了解,因为我正在尝试使用节点编译,而不是纯粹的nexe我不会面临与MongoDb的问题。

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" } } 

其中一个模型

 // 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); 

当试图将我的应用程序与nexe绑定时刚刚得到相同的警告。

为了解决这个问题,我只需要在我的package.json文件中添加一个"nexe"条目,正如nexe文档所示: 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 } }