linux js脚本上没有这样的文件或目录

3mpgtkmj  于 2023-06-21  发布在  Linux
关注(0)|答案(1)|浏览(126)

This is the code used to open the file
The function used in code above
我有一个crontab,它使用以下命令运行脚本:usr/bin/node/services/integration/build/index.js
cron日志生成以下错误:错误:ENOENT:没有这样的文件或目录,请打开“./sql/search.sql”
我的项目文件夹结构:integration/ build/ sql/ src/
如果我访问我的项目文件夹并运行node build/index.js,它可以正常工作,我应该怎么做才能解决这个问题?
我已经尝试移动sql文件夹

axr492tv

axr492tv1#

进程的工作目录可能不是项目目录,而是$HOME.相对于工作目录。在运行脚本之前,必须使用脚本文件的相对路径,或者使用cd更改工作目录。参见this question on the Unix Stack Exchange
从您在问题中描述的设置和路径来看,我假设项目目录是/services/integration,脚本的相对路径是build/index.js,并试图访问/services/integration/sql/search.sql。在这种情况下:

指定脚本文件的相对路径:

import { dirname, resolve } from 'path'
import { fileURLToPath } from 'url'

// Get equivalent of __dirname but within ESM
// This will contain `/services/integration/build`, assuming script file in "build" directory
const __dirname = dirname(fileURLToPath(import.meta.url))

// Get correct path for SQL file
const sqlFilename = resolve(__dirname, '../sql/search.sql')

--或--

使用cd更改工作目录:

crontab中的代码(假设正确的项目路径是/services/integration):

cd /services/integration && /usr/bin/node build/index.js

相关问题