将Utility app部署为Windows Service NodeJS

时间:2017-09-13 17:04:34

标签: node.js windows

使用PKG for Windows作为服务通过Node-Windows部署应用程序。

我有我的NodeWindows安装和卸载脚本,我正在尝试使用PKG将它们变成Windows可执行文件。 PKG创建.exe文件,但是当我运行该文件时,它会抛出如下错误:

PKG /前奏/ bootstrap.js:1226       return wrapper.apply(this.exports,args);                      ^

ReferenceError: svc is not defined
    at Object.<anonymous> (C:\snapshot\transient\installTransient2.js:0)
    at Module._compile (pkg/prelude/bootstrap.js:1226:22)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (pkg/prelude/bootstrap.js:1281:12)
    at run (bootstrap_node.js:432:7)
    at startup (bootstrap_node.js:192:9)
    at bootstrap_node.js:547:3

使用我的Node-windows脚本:

var Service = require('node-windows').Service;

var scv = new Service({
  name: 'Transient2',
  description: 'Yet Another File Transfer Utility in NodeJS',
  script: 'server.js'
});

svc.on('install', () => {
  console.log('successfully installed');
  svc.start();
});

svc.install();

我想认为节点窗口没有被打包到可执行文件中。根据PKG的文档,它应该在require语句中的任何内容中“填充”,除非它是通过path.join()调用声明的。

如何在Windows中创建服务的安装程序中打包我的应用程序?

1 个答案:

答案 0 :(得分:2)

提示是错误的 - 你已经在Node.js脚本中的第3行声明了变量名'scv'而不是'svc'。

这意味着当您将第9行的'install'事件处理程序添加到'svc'时,它找不到该变量,因为它是拼写错误。这就是您收到所描述的ReferenceError的原因。