【问题标题】:How do you run a NodeJS Express API with typescript files with Forever?如何使用 Forever 运行带有 typescript 文件的 NodeJS Express API?
【发布时间】:2020-07-15 21:32:01
【问题描述】:

我已经永久安装了 npm,还安装了 npm ts-node,并且 npm 安装了 typescript 来尝试运行这个 API。 我一直在尝试“永远启动 -v -c ts-node ./lib/server.ts”或“永远启动 -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 或任何其他窗口,因为这将在 VM 上运行并且需要它始终处于启动状态,以便客户端能够访问其端点。 这是项目的文件夹结构,如果重要的话,客户端是一个 Angular 项目

【问题讨论】:

  • 为什么要运行 .ts 文件? nodejs 文件应该是 .js 文件。 Forever 只是为了让nodejs 服务器运行并在它崩溃时重新启动。 stackoverflow.com/a/32944853/185672
  • @Phil 这个项目是由另一个开发人员启动的,他认为如果前端是使用类型脚本的 Angular 为什么不在后端也使用 .ts 文件,这是他的逻辑,我没有被锁定如果有另一种方法可以实现我的目标,我将永远使用,我是开放的,永远是我见过的大多数人使用的方法。那么我需要创建等效的 .js 文件吗?

标签: node.js typescript api forever


【解决方案1】:

使用ng build --prodAngular 构建到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')));

【讨论】:

  • 这是为了让 Node API 知道在哪里可以找到转译后的 server.js?
【解决方案2】:

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

然后我发现最新版本的 Forever 能够读取“C:Program Files”中的文件空间存在问题,所以我们降级到永远 v1.0.1,一旦我这样做了,我就运行了“永远启动服务器”。 js',这让我的 api 在正确的端口上运行,我的 Angular 应用程序能够访问它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2022-01-10
    • 2016-11-25
    • 1970-01-01
    相关资源
    最近更新 更多