-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[node源码解析] os.tmpdir() 与 os.homedir() #7
Comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
问题
在 lerna bootstrap 运行 postintall 任务脚本中,调用 os.tmpdir() 函数输出结果值会默认指向当前npm包项目目录,和通过 npm run postinstall 运行脚本任务返回正确的系统临时目录 /tmp 存在差异。
解决方法
通过使用 os.homedir() 替代 os.tmpdir() ,在二者运行时环境中返回值相同,来保证一致性。
根本原因
通过阅读源码,可以看到,以 Linux 环境为例, os.tmpdir() 会按顺序读取环境变量
TMPDIR
|TMP
|TEMP
,否则默认返回为/tmp
。lerna bootstrap
会初始化环境变量TMPDIR
为当前安装包项目根目录,导致 `os.tmpdir() 与 默认的 npm install postinstall 运行时不一致。同理,通过阅读 os.homdir() 统一读取 HOME 环境变量,只需要保证 lerna bootstrap 与 npm run postinstall 一致即可。
测试用例
通过以下测试用例
os.test.js
,为了验证 os.tmpdir() os.homedir() 是否可以通过修改环境变量值,来获取不同的返回值。输出结果如下:
推荐阅读
The text was updated successfully, but these errors were encountered: