如何在node.js中运行后台任务

如何在node.js中运行后台任务,node.js,express,Node.js,Express,我发现我可以使用nohup node index.js运行后台任务。 我的问题与以下来源有关。 . 在这个源代码中,package.json文件包含nodemon,当我用npm start启动服务器时,它就开始工作了。 现在,我尝试在后台运行服务器。 但它因以下错误而崩溃 [nodemon] 1.14.12 [nodemon] to restart at any time, enter `rs` [nodemon] watching: *.* [nodemon] starting `node a

我发现我可以使用
nohup node index.js
运行后台任务。 我的问题与以下来源有关。 . 在这个源代码中,
package.json
文件包含
nodemon
,当我用
npm start
启动服务器时,它就开始工作了。 现在,我尝试在后台运行服务器。 但它因以下错误而崩溃

[nodemon] 1.14.12
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node app.js`
/home/tom/Documents/work/wallet/app/app.js:3
import bodyParser from 'body-parser';
^^^^^^

SyntaxError: Unexpected token import
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:607:28)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
at Function.Module.runMain (module.js:684:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
[nodemon] app crashed - waiting for file changes before starting...

如何在后台运行此服务器?

您可能需要使用
ES-2015
babel预设来传输导入语句。如果您不特别需要ES6导入,只需使用
require

var bodyParser = require("body-parser")
另一方面,您可以尝试使用永久npm包。让我们在后台启动节点服务器

是你想用的

const { spawn } = require('child_process');
const otherScript = spawn('node', ['script-you-wanna-run.js']);

otherScript.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

您不能在后台运行
nodemon
(即
nohup npm start
nohup nodemon app.js
),nodemon应该用于开发环境,它可以让您看到在开发过程中对文件所做的更改,如果您正在生产中寻找运行express app,那么您应该使用,当应用程序崩溃或进行更改时,它会自动重新启动应用程序,有关详细信息,请阅读此内容。以下是使用模块的示例:

安装pm2:

npm install pm2 -g
运行应用程序:

pm2 start app.js

你可以在油灰上运行几个屏幕

屏风

然后您将有一个屏幕。 现在可以在此屏幕上运行节点实例

这个屏幕一直处于活动状态

键入CTRL+A+D以退出屏幕


即使您退出putty,您的节点实例现在也始终处于活动状态。

您使用的是什么版本的节点?我在您的帮助下尝试了它,但找不到端口号。我认为它在
3000
上运行,如果不尝试
8081
。如果没有,请尝试对自定义端口号
port=3000永久启动server.js
仍不运行。我设置端口=3500永久启动app.js您是否解决了导入错误?运行
node server.js
时,stacktrace会说什么?如果和以前一样,那么修改导入语句。我不需要子进程。我将在任何情况下永久运行此服务器有没有办法在没有nodemon的情况下运行?如果我删除nodemon,它将显示种子项目中的错误TMUX或PM2将是可行的方法。我想运行此应用程序进行生产。我尝试使用
pm2
但节点进程未运行尝试使用
pm2 start./build/bin/www
pm2 start app.js