haikea
V2EX  ›  Node.js

安装 nodejs,运行 npm 命令有用,但是提示“不是内部或外部命令”

  •  
  •   haikea · May 15, 2019 · 14202 views
    This topic created in 2580 days ago, the information mentioned may be changed or developed.
    小弟最近想学习下前端 vue,就先安装下环境,很奇怪公司的电脑按流程走下来都没问题,网上的 demo 也运行成功能在本地访问。
    但是在自己的电脑上安装完 nodejs 后,npm 命令一直有问题,比如运行 npm -v 会出现版本信息,但是会先提示“不是内部或外部命令”,一直搞不明白是哪里的问题。我换 nodejs 版本从稳定帮换成最新版安装,还是会出现一样的问题,也不是 path 配置的问题。
    24 replies    2019-05-16 09:50:31 +08:00
    fsdgfd
        1
    fsdgfd  
       May 15, 2019 via Android   ❤️ 1
    装完之后重新打开命令行试试,还不行的话重启电脑试试?
    haikea
        2
    haikea  
    OP
       May 15, 2019
    C:\windows\system32>npm -v
    'CALL "C:\Program Files\nodejs\\node.exe" "C:\Program Files\nodejs\\node_modules
    \npm\bin\npm-cli.js" prefix -g' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    6.9.0
    haikea
        3
    haikea  
    OP
       May 15, 2019
    C:\windows\system32>node -v
    v12.2.0

    C:\windows\system32>npm -v
    'CALL "C:\Program Files\nodejs\\node.exe" "C:\Program Files\nodejs\\node_modules
    \npm\bin\npm-cli.js" prefix -g' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    6.9.0
    haikea
        4
    haikea  
    OP
       May 15, 2019
    @fsdgfd 试过的,效果就像三楼我贴的那样
    agdhole
        5
    agdhole  
       May 15, 2019 via Android
    卸载了装 10.x lts 的试试
    hoyixi
        6
    hoyixi  
       May 15, 2019
    Win 下装完 node,一般也会自动给你装个 node 专用的命令行,打开那个命令行试试
    skiy
        7
    skiy  
       May 15, 2019 via Android
    yarn 满足你
    haikea
        8
    haikea  
    OP
       May 15, 2019
    @agdhole 谢谢老铁,10.x 和 12.x 我都试过 o(╥﹏╥)o
    agdhole
        9
    agdhole  
       May 15, 2019
    @haikea #8 装完之后要重启 /注销,因为 path 要 reload 才能生效
    lovedebug
        10
    lovedebug  
       May 15, 2019 via Android
    这种问题你应该谷歌错误,环境问题在这里问基本浪费时间
    wlor
        11
    wlor  
       May 15, 2019
    环境变量没配置对
    rbe
        12
    rbe  
       May 15, 2019
    推荐使用 nvm 或 nvs 管理 node 版本
    shuigao
        13
    shuigao  
       May 15, 2019
    菜鸟教程那个 vue 对基础很好的 我前段时间 就是参考那个教程安装的
    way2create
        14
    way2create  
       May 15, 2019
    按理就是环境变量的问题 配了多个有个错的?
    boris1993
        15
    boris1993  
       May 15, 2019 via Android
    检查 PATH

    @agdhole 只需要关了 cmd 重开就可以
    iromfeed
        16
    iromfeed  
       May 15, 2019 via Android
    ٩۶多谷歌……
    Aliennnnnn
        17
    Aliennnnnn  
       May 15, 2019
    环境变量的问题,去网上搜一下
    no1xsyzy
        18
    no1xsyzy  
       May 15, 2019   ❤️ 1
    应该不是环境变量问题,应该是这行报的错:
    https://github.com/npm/cli/blob/v6.9.0/bin/npm.cmd#L12
    甚至还没进 node 就报错了
    几个环境变量都正常展开了

    理论上来说 for in ('***') 应该被当作 cmd 命令解析,比如这样:

    > for /f "delims=" %f in ('callc cat D:\test\warnings.txt') do @echo %f
    'callc' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。

    上面特地将 call 错拼成 callc,发现错误会提示出现在 callc 上,而不是整句上。
    所以应该检查一下 npm.cmd 内容是否有问题。
    no1xsyzy
        19
    no1xsyzy  
       May 15, 2019   ❤️ 1
    似乎是环境变量 ComSpec 被修改了?
    又是奇奇怪怪的副作用……
    ultimate
        20
    ultimate  
       May 15, 2019
    实在不行就换 Linux 或 mac 吧
    haikea
        21
    haikea  
    OP
       May 16, 2019
    @no1xsyzy 谢谢老铁,就是 ComSpec 的问题,里面加了个 mevan 的路径,删掉就好了,你是怎么看出来的啊
    haikea
        22
    haikea  
    OP
       May 16, 2019
    @no1xsyzy 谢谢老铁,问题解决了,原来是 ComSpec 的问题,不过和你说的这个应该也有关系,我今天来研究下这个文件
    no1xsyzy
        23
    no1xsyzy  
       May 16, 2019
    @haikea 是搜索出来的,我在 #18 只是隐约感觉到是 shell lexer 被篡改了…… 之后从头搜索一下你的问题就到了 StackOverflow,被掺的东西似乎也是各种各样。
    不过真没想到 Windows 下 Shell 是按照环境变量来调用子 Shell 的…… 词法会被其他的地方改变简直是蠢。
    haikea
        24
    haikea  
    OP
       May 16, 2019
    @no1xsyzy 原来是这样的,看来我要学习的还很多
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2702 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 11:28 · PVG 19:28 · LAX 04:28 · JFK 07:28
    ♥ Do have faith in what you're doing.