"Arguments to path.resolve must be strings" 从 Git 挂钩调用 'gitbook build' 时
"Arguments to path.resolve must be strings" when calling 'gitbook build' from a Git hook
我正在尝试 运行 gitbook build
在 post-receive Git 钩子上(Gitlab,Debian 7,虚拟私有)服务器。
基本上我想:
- 将裸存储库检出到临时目录
- 运行
gitbook build
在那个临时目录中
- 通过
rsync
与网站空间同步
post-receive
脚本 运行 类似于:
git --work-tree=/home/git/temp-checkout /
--git-dir=/home/git/repositories/my/repo.git checkout -f
gitbook build /home/git/temp-checkout
rsync ...
运行 这些来自服务器命令行的命令完美运行。
运行 服务器命令行中的脚本也能正常工作。
但是当从 Git 挂钩调用脚本时,gitbook
调用会产生以下错误:
remote: path.js:439
remote: throw new TypeError('Arguments to path.resolve must be strings');
remote: ^
remote: TypeError: Arguments to path.resolve must be strings
remote: at Object.posix.resolve (path.js:439:13)
remote: at Object.<anonymous> (/usr/lib/node_modules/gitbook-cli/lib/config.js:5:24)
remote: at Module._compile (module.js:460:26)
remote: at Object.Module._extensions..js (module.js:478:10)
remote: at Module.load (module.js:355:32)
remote: at Function.Module._load (module.js:310:12)
remote: at Module.require (module.js:365:17)
remote: at require (module.js:384:17)
remote: at Object.<anonymous> (/usr/lib/node_modules/gitbook-cli/bin/gitbook.js:11:14)
remote: at Module._compile (module.js:460:26)
搜索该错误消息似乎指向 G运行t,但我只是不知道这里发生了什么。我怀疑 invocation/permissions,但用户(在这两种情况下 whoami
returns git
用户)和工作目录似乎都没有什么不同。
但无论如何 gitbook
在调用 "locally"(即从服务器的命令行)或从 Git 挂钩时表现不同。
一些进一步的考虑使我找到了正确的方向:调用 Git 挂钩与在服务器的命令行上工作具有不同的登录上下文。所以 运行 set > some-file
在两种情况下都揭示了环境变量的显着差异。
一些实验证明是
export HOME=/home/git
必须包含在脚本中。所以很明显 gitbook
因没有设置环境变量而感到窒息。
我正在尝试 运行 gitbook build
在 post-receive Git 钩子上(Gitlab,Debian 7,虚拟私有)服务器。
基本上我想:
- 将裸存储库检出到临时目录
- 运行
gitbook build
在那个临时目录中 - 通过
rsync
与网站空间同步
post-receive
脚本 运行 类似于:
git --work-tree=/home/git/temp-checkout /
--git-dir=/home/git/repositories/my/repo.git checkout -f
gitbook build /home/git/temp-checkout
rsync ...
运行 这些来自服务器命令行的命令完美运行。
运行 服务器命令行中的脚本也能正常工作。
但是当从 Git 挂钩调用脚本时,gitbook
调用会产生以下错误:
remote: path.js:439
remote: throw new TypeError('Arguments to path.resolve must be strings');
remote: ^
remote: TypeError: Arguments to path.resolve must be strings
remote: at Object.posix.resolve (path.js:439:13)
remote: at Object.<anonymous> (/usr/lib/node_modules/gitbook-cli/lib/config.js:5:24)
remote: at Module._compile (module.js:460:26)
remote: at Object.Module._extensions..js (module.js:478:10)
remote: at Module.load (module.js:355:32)
remote: at Function.Module._load (module.js:310:12)
remote: at Module.require (module.js:365:17)
remote: at require (module.js:384:17)
remote: at Object.<anonymous> (/usr/lib/node_modules/gitbook-cli/bin/gitbook.js:11:14)
remote: at Module._compile (module.js:460:26)
搜索该错误消息似乎指向 G运行t,但我只是不知道这里发生了什么。我怀疑 invocation/permissions,但用户(在这两种情况下 whoami
returns git
用户)和工作目录似乎都没有什么不同。
但无论如何 gitbook
在调用 "locally"(即从服务器的命令行)或从 Git 挂钩时表现不同。
一些进一步的考虑使我找到了正确的方向:调用 Git 挂钩与在服务器的命令行上工作具有不同的登录上下文。所以 运行 set > some-file
在两种情况下都揭示了环境变量的显着差异。
一些实验证明是
export HOME=/home/git
必须包含在脚本中。所以很明显 gitbook
因没有设置环境变量而感到窒息。