gpt4 book ai didi

node.js - Nodejs 进程 CLI 变量包含对象

转载 作者:太空宇宙 更新时间:2023-11-03 21:55:32 25 4
gpt4 key购买 nike

我对使用 process.argv 的 NodeJS CLI 命令非常陌生,能够将包含对象的变量传递给我的函数方法,但我的对象中的属性值似乎是调用此过程时未找到。我在对象 siteUrl 的第二个属性处收到错误,似乎无法确定这是否是 process.argv 编译信息的方式,或者我是否是这样错误地使用命令。如果我用 params 替换 process.argv ,那么我不会收到错误。

这是我的终端命令:

Node app.js 参数

这是我的变量设置:

var siteUrl = encodeURIComponent('http://www.test.com/');

var params = {
auth: auth,
siteUrl: siteUrl,
resource: {
'startDate': moment().subtract(3, 'days').format("YYYY-MM-DD"),
'endDate': moment().subtract(2, 'days').format("YYYY-MM-DD"),
'dimensions': ['query', 'page'],
'dimensionFilterGroups': [{
'filters': [{
'dimension': 'country',
'operator': 'equals',
'expression': 'USA'
}]
}]
}

这是我的方法

var query = webmasters.searchanalytics.query(process.argv, function(err, res){
var formattedQueryList = [];
if (err){
console.log('This is the error: ' + err);
} else { ... }

我还记录我的对象以确保值存在:

 console.log(params.resource.startDate)
console.log(params.resource.startDate)
console.log(params.resource.endDate)
console.log(params.siteUrl)
console.log(siteUrl)

这是控制台日志:

2017-02-11
2017-02-12
http%3A%2F%2Fwww.test.com%2F
http%3A%2F%2Fwww.test.com%2F
This is the error: Error: Missing required parameters: siteUrl

最佳答案

当您传递参数 Node 时,将其视为字符串。所以你必须注意 Json 格式。
例如
你想传递一个对象person,这里可以明确设置\"
node lib/index.js {\"name\":\"Bob\"}

或者以不同的方式使用 ' 包装 json:
node lib/index.js '{"name":"Bob"}'

在您的代码中,您应该将字符串解析为 JSON。

const obj =  JSON.parse( process.argv[2] );
console.log(obj);
console.log('Hello ' + obj.name);

这会给你Hello Bob。在您的情况下,您可以在将其作为参数传递之前使用 JSON.stringify(params)
希望这有助于澄清。

关于node.js - Nodejs 进程 CLI 变量包含对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42228929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com