您如何使用 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 应用程序能够访问它。
我安装了 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 应用程序能够访问它。