nodejs 如何从命令行指定文件路径 和 输出路径? node js-nodejs怎么获取脚本所在的路径

nodejs\u600e\u4e48\u5728\u6307\u5b9a\u6587\u4ef6\u5939\u4e0b\u8fd0\u884c

\u4e00\u3001\u6316\u5751 & \u6389\u5751\uff1a
\u7f18\u8d77\u4e00\u6bb5\u8fd9\u6837\u7684\u4ee3\u7801\uff1a
fs.readFile('./docs/use.md', function (err, buffer) {
if (err) {
return console.log('error: ', err);
}

console.log('OK');
});

\u672c\u5730\u8fd0\u884c\u65f6\u4e00\u5207 OK\uff0c\u7ebf\u4e0a\u90e8\u7f72\u65f6\u5374\u6b7b\u6d3b\u627e\u4e0d\u5230 ./docs/use.md \u8fd9\u4e2a\u6587\u4ef6\uff0c\u540e\u6765\u624d\u53d1\u73b0\u662f\u56e0\u4e3a\u7ebf\u4e0a\u542f\u52a8\u5e94\u7528\u65f6\u4e0d\u662f\u4ece\u5f53\u524d\u76ee\u5f55\u542f\u52a8\u4e86\uff0c\u4e0d\u8fc7\u4e3a\u4ec0\u4e48\u542f\u52a8\u811a\u672c\u7684\u4f4d\u7f6e\u4e5f\u4f1a\u5f71\u54cd\u8fd9\u4e2a\u8def\u5f84\u5462\uff0c\u4e14\u5f80\u4e0b\u770b\u3002
\u4e8c\u3001\u586b\u5751\uff1a
Node \u4e2d\u7684\u6587\u4ef6\u8def\u5f84\u5927\u6982\u6709 __dirname, __filename, process.cwd(), ./ \u6216\u8005 ../\uff0c\u524d\u4e09\u4e2a\u90fd\u662f\u7edd\u5bf9\u8def\u5f84\uff0c\u4e3a\u4e86\u4fbf\u4e8e\u6bd4\u8f83\uff0c./ \u548c ../ \u6211\u4eec\u901a\u8fc7 path.resolve(\u2018./\u2019)\u6765\u8f6c\u6362\u4e3a\u7edd\u5bf9\u8def\u5f84\u3002
\u5148\u770b\u4e00\u4e2a\u7b80\u5355\u7684\u6817\u5b50\uff1a
\u5047\u5982\u6211\u4eec\u6709\u8fd9\u6837\u7684\u6587\u4ef6\u7ed3\u6784\uff1a
app/
-lib/
-common.js
-model
-task.js
-test.js
\u5728 task.js \u91cc\u7f16\u5199\u5982\u4e0b\u7684\u4ee3\u7801\uff1a
var path = require('path');console.log(__dirname);console.log(__filename);console.log(process.cwd());console.log(path.resolve('./'));

\u5728 model \u76ee\u5f55\u4e0b\u8fd0\u884c node task.js \u5f97\u5230\u7684\u8f93\u51fa\u662f\uff1a
/Users/guo/Sites/learn/app/model.js/Users/guo/Sites/learn/app/model.js/task.js/Users/guo/Sites/learn/app/model.js/Users/guo/Sites/learn/app/model.js

\u7136\u540e\u5728 app \u76ee\u5f55\u4e0b\u8fd0\u884c node model/task.js\uff0c\u5f97\u5230\u7684\u8f93\u51fa\u662f\uff1a
/Users/guo/Sites/learn/app/model.js/Users/guo/Sites/learn/app/model.js/task.js/Users/guo/Sites/learn/app
/Users/guo/Sites/learn/app

\u90a3\u4e48\uff0c\u4e0d\u597d\u610f\u601d\u4e0d\u662f\u95ee\u9898\u6765\u4e86~T_T,\u6211\u4eec\u53ef\u4ee5\u5f97\u51fa\u4e00\u4e9b\u80a4\u6d45\u7684\u7ed3\u8bba\u4e86\uff1a
__dirname: \u603b\u662f\u8fd4\u56de\u88ab\u6267\u884c\u7684 js \u6240\u5728\u6587\u4ef6\u5939\u7684\u7edd\u5bf9\u8def\u5f84
__filename: \u603b\u662f\u8fd4\u56de\u88ab\u6267\u884c\u7684 js \u7684\u7edd\u5bf9\u8def\u5f84
process.cwd(): \u603b\u662f\u8fd4\u56de\u8fd0\u884c node \u547d\u4ee4\u65f6\u6240\u5728\u7684\u6587\u4ef6\u5939\u7684\u7edd\u5bf9\u8def\u5f84
./: \u8ddf process.cwd() \u4e00\u6837\u3001\u4e00\u6837\u3001\u4e00\u6837\u7684\u5417\uff1f
\u6211\u660e\u660e\u8bb0\u5f97\u5728 require(\u2018../lib/common\u2019) \u91cc\u4e00\u76f4\u90fd\u662f\u5404\u79cd\u76f8\u5bf9\u8def\u5f84\u5199\uff0c\u4e5f\u6ca1\u89c1\u62a5\u4ec0\u4e48\u9519\u554a\uff0c\u6211\u4eec\u8fd8\u5728\u518d\u6765\u4e2a\u6817\u5b50\u5427\uff0c\u8fd8\u662f\u4e0a\u9762\u7684\u7ed3\u6784\uff0c\u2019model/task.js\u2019 \u91cc\u7684\u4ee3\u7801\u6539\u6210\uff1a
var fs = require('fs');var common = require('../lib/common');

fs.readFile('../lib/common.js', function (err, data) { if (err) return console.log(err);
console.log(data);
});

\u5728 model \u76ee\u5f55\u4e0b\u8fd0\u884c node task.js\uff0c\u4e00\u5207 Ok\uff0c\u6ca1\u6709\u62a5\u9519\u3002\u7136\u540e\u5728 app \u76ee\u5f55\u4e0b\u8fd0\u884c node model/task.js\uff0c\u7136\u540e\u5f88\u679c\u65ad\u6ef4\u62a5\u9519\u4e86:
\u90a3\u4e48\u8fd9\u4e0b\u95ee\u9898\u771f\u7684\u90fd\u662f\u6765\u4e86\uff0c\u6309\u7167\u4e0a\u9762\u7684\u7406\u8bba\uff0c\u5728 app \u4e0b\u8fd0\u884c\u65f6\uff0c../lib/common.js \u4f1a\u88ab\u8f6c\u6210 /Users/guo/Sites/learn/lib/common.js\uff0c\u8fd9\u4e2a\u8def\u5f84\u663e\u7136\u662f\u4e0d\u5b58\u5728\u7684\uff0c\u4f46\u662f\u4ece\u8fd0\u884c\u7ed3\u679c\u53ef\u4ee5\u770b\u51fa require(\u2018../lib/common\u2019) \u662f OK \u7684\uff0c\u53ea\u662f readFile \u65f6\u62a5\u9519\u4e86\u3002
\u90a3\u4e48\u5173\u4e8e ./ \u6b63\u786e\u7684\u7ed3\u8bba\u662f\uff1a
\u5728 require() \u4e2d\u4f7f\u7528\u662f\u8ddf __dirname \u7684\u6548\u679c\u76f8\u540c\uff0c\u4e0d\u4f1a\u56e0\u4e3a\u542f\u52a8\u811a\u672c\u7684\u76ee\u5f55\u4e0d\u4e00\u6837\u800c\u6539\u53d8\uff0c\u5728\u5176\u4ed6\u60c5\u51b5\u4e0b\u8ddf process.cwd() \u6548\u679c\u76f8\u540c\uff0c\u662f\u76f8\u5bf9\u4e8e\u542f\u52a8\u811a\u672c\u6240\u5728\u76ee\u5f55\u7684\u8def\u5f84\u3002
\u4e09\u3001\u603b\u7ed3\uff1a
\u53ea\u6709\u5728 require() \u65f6\u624d\u4f7f\u7528\u76f8\u5bf9\u8def\u5f84(./, ../) \u7684\u5199\u6cd5\uff0c\u5176\u4ed6\u5730\u65b9\u4e00\u5f8b\u4f7f\u7528\u7edd\u5bf9\u8def\u5f84\uff0c\u5982\u4e0b\uff1a
// \u5f53\u524d\u76ee\u5f55\u4e0b
path.dirname(__filename) + \u2018/test.js\u2019;
// \u76f8\u90bb\u76ee\u5f55\u4e0b
path.resolve(__dirname, \u2018../lib/common.js\u2019);
\u56db\u3001\u53c2\u8003\u94fe\u63a5\uff1a
What is the difference between __dirname and ./ in node.js
nodejs API
\u4ee5\u4e0a:smile:\u3002

nodejs\u63d0\u4f9b\u4e86\u4e00\u4e2apath\u7684\u6a21\u5757\uff0c\u5b83\u63d0\u4f9b\u4e86\u4e00\u7cfb\u5217\u7684\u5de5\u5177\u8fd8\u662f\uff0c\u7528\u4e8e\u5904\u7406\u6587\u4ef6\u548c\u76ee\u5f55\u7684\u8def\u5f84\u3002\u5f15\u5165\u6a21\u5757\uff1a
const path = require('path');1\u3001\u83b7\u53d6\u4e00\u4e2a\u6587\u4ef6\u7684\u76ee\u5f55\u540d path.dirname()
const filepath = '/tmp/demo/js/app.js'; // \u811a\u672c\u8def\u5f84console.log(path.dirname(filepath)); // \u8f93\u51fa\uff1a/tmp/demo/js2\u3001\u83b7\u53d6\u5f53\u524d\u5de5\u4f5c\u8fdb\u7a0b\u7684\u76ee\u5f55
console.log(process.cwd());

node运行时是可以加参数的例如:node a.js arg1 arg2 arg3
代码中var args = process.argv.splice(2)命令行参数

扩展阅读:学nodejs还是学java ... 卸载nodejs及重装 ... 安装了nodejs还是找不到node命令 ... nodejs卸载命令 ... 更新nodejs 版本命令 ... nodejs教程详细 ... 为什么没人用nodejs做后端 ... 如何升级nodejs版本 ... nodejs运行python ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网