您如何使用 Forever 运行 带有打字稿文件的 NodeJS Express API?

How do you run a NodeJS Express API with typescript files with Forever?

我安装了 npm forever,还安装了 ts-node,npm 安装了 typescript 来尝试获取这个 API 运行ning。 我一直在尝试“ forever start -v -c ts-node ./lib/server.ts” 或 "forever start -v -v ts-node ./lib/app.ts" 以及 运行 的许多变体,但永远的日志会抛出错误

events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: spawn tail ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:270:12)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  errno: 'ENOENT',
  code: 'ENOENT',
  syscall: 'spawn tail',
  path: 'tail',
  spawnargs: [ '-n', 100, 'C:\Users\*****\.forever\P0EG.log' ]

如果我关注那个日志文件,它说

'ts' 未被识别为内部或外部命令, 可运行的程序或批处理文件。 错误:永远检测到脚本已退出,代码为:1

我已经为此工作好几天了,似乎无法找到解决方案,我需要在后台 运行 服务器,而不需要 VSCode或任何其他 window 打开,因为这将在 VM 上 运行 并且需要它始终处于运行状态以便客户端能够访问其端点。 这是项目的文件夹结构,如果重要的话,客户端是一个 Angular 项目

使用 ng build --prod.

Angular 构建到 dist 文件夹中

Angular.json 文件应包含有关如何执行此操作的说明

"options": {
    "outputPath": "dist",

    "index": "... index.html",
    "main": "... main.ts",

    "assets": [
        ... assets file location
    ],
    "styles": [
         ... your css
    ],
    "scripts": []
}

让您的 node 服务器指向该目录:

/* init static directory */
app.use(express.static(path.join(__dirname, 'dist')));

首先要解决这个问题,我必须 运行 'npm run prod' 这触发了一个 npm 构建,它为我提供了 app.js 和 [=18= 所需的 dist 文件夹] 个文件

然后我发现最新版本的 Forever 存在问题,无法读取 'C:Program Files' 中的文件空间,所以我们在执行此操作后降级到 forever v1.0.1 运行 'forever start server.js' 这让我的 api 运行 连接到正确的端口,我的 Angular 应用程序能够访问它。