在Node.js中,process.argv未定义

7

我似乎无法在Node中运行最基本的脚本:

平台: Windows 10

Node版本: v10.7.0

文件名: "sample.js"

process.argv.forEach((val, index) => {
    console.log(`${index}: ${val}`);
  });

命令行:

D:\temp>node sample.js 1 2 3
D:\temp\sample.js:4
process.argv.forEach((val, index) => {
             ^

TypeError: Cannot read property 'forEach' of undefined
    at Object.<anonymous> (D:\temp\sample.js:4:14)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:266:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)

1
这是整个代码吗?console.log(process)是什么意思? - Federkun
2
展示给我们整个 sample.js 文件。具体来说,在第4行之前的第1-3行是什么,使用你的 process.argv.forEach()?我保证在这三行中的其中一行正在重新定义 process 为一个 Function,而不是它应该是的 Object - dossy
1
@Parsa 考虑将您的解决方案添加为答案。 - mihai
2
@dossy 谢谢,这解决了我的问题。我定义了一个 process() 函数。唉。 - Darren Cook
@DarrenCook 呵呵,这正是我怀疑的 - 谢谢你的确认。嗯,有点痛! :) - dossy
显示剩余4条评论
3个回答

15

解决方案

我发现,是因为我在下面定义了一个名为process的函数,这就是为什么我的process对象被覆盖的原因。

因此,要解决这个问题:

  1. 检查是否用函数重写了"process"对象

  2. 逐行向上初始化并找到覆盖它的代码

旧建议:

对于我的情况,在第一行放置并不起作用。"Process"是一个函数。

为了获取对象,我使用了显式调用:

const process = require('process');


2
重新阐述我的评论作为答案,因为DarrenCook确认在他的特定情况下我是正确的
展示完整的sample.js文件。具体来说,在你的process.argv.forEach()之前的1-3行上有什么内容?我保证在这三行中,有一行重新定义了process为一个Function而不是它应该是的Object

这刚刚救了我一场大麻烦! - Adam

-5
代码是正确的,请重新安装node.js。

为什么重新安装会解决这个问题?这是Windows或node 10.7.0上的常见问题吗? - Darren Cook

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接