运行“npm install”时出现意外的标记“。”

55

我正试图通过'npm install -g @angular/cli'安装Angular CLI,但是遇到以下错误:

npm ERR! Unexpected token '.'
npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\<user>\AppData\Local\npm-cache\_logs\2022-02-02T15_25_07_320Z-debug-0.log

npm 版本:8.3.1

node 版本:v17.4.0

非常感谢您的帮助!谢谢 :)


5
在Windows上,回退到node 16.13.2解决了我的问题。 - STEEL
8
如果你使用的是早于 v1.1.8 版本的 nvm-windows,由于其检索 Node.js 发行版的方式,你也会遇到这个问题。 - jacobq
@STEEL 和我一样。我将我的 Node 版本从 16.14.2 降级到了 16.13.2,然后 npm install --global xxx 就可以正常工作了。谢谢。 - Orionpax
我在使用 Node 18.7.0 和 npm 8.18.0 时遇到了这个问题。 - Mansoor Ul Haq
13个回答

41

在Win 10系统下,npm版本为8.1.2,node版本为16.14.2和nvm版本为1.1.17以及1.1.19时遇到了这个问题。 根据此答案,将node版本降级到16.13.2即可解决该问题。


太好了!这对我也有效。我使用的是Node 16.15.1,将其降级到16.13.2后问题就解决了。 - TheScripterX
根据 Github 的问题链接,解决方法是将 Windows 上的 nvm 升级到 1.1.10,然后通过 nvm 删除(所有?)Node 版本并重新安装它们。对我有效。 - WTJ
2023 年,这个可行了! - André Ibarra

37

5
请运行命令 choco upgrade nvm 并使用 nvm 重新安装 Node.js。 - Jerry
4
在Windows 11上,手动安装NVM 1.1.9后,运行nvm install 16.18.0nvm use 16.18.0即可解决问题。之后,全局NPM包的安装将再次成功,例如npm install -g yarn - Erick Petrucelli
这就是正确的答案。刚刚更新了Windows的NVM。 - Konrad G
我不得不重新安装 Node 版本以使其与最新的 NVM 版本(1.1.10)兼容。 - VRC

27

我在Windows 10上使用Node 18和NPM 8时遇到了问题,我也使用了Windows版的NVM。这是我解决问题的方法:

  • 在现有版本上安装最新版本的NVM for Windows
  • 运行nvm uninstall 18.X.X,其中18.X.X是您正在使用的版本
  • 运行nvm install 18.X.X,其中18.X.X是您正在使用的版本

24

这是关于npm 8.3.1版本的已报告问题

最好的选择是跳过此版本(使用8.3.2或8.4),使用更早的版本(8.3.0),或使用其他小于17的node版本。


18
请注意,如果您使用的是 nvm for windows 版本小于1.1.9,即使使用新版的node/npm,也可能会出现此问题。 - jacobq
8
v16.13.2 对我可用。从 v16.14.0 到最新版(目前为止是 v16.15.0),都使用了有缺陷的版本 npm 8.3.1。 - Val
@philipp-meissner 是的,但是当 npm i -g npm@some-version 抛出错误时,如何切换到早期版本? - joniba
2
我也遇到了同样的问题,Win10,NVM@1.1.4,node@[16.15.1, 16.15.0,14.10.0],npm@~8.3.1。升级NVM到>=1.1.9`(如@jacobq所提到的)并重新安装所有node版本解决了这个问题。 - soumasandesu
v16应该可以工作,如答案所述。考虑到它已经相当旧了,你最好升级到v18.10或更高版本。 - Philipp Meissner
显示剩余4条评论

16
下列方法对我有效:
从其代码库 (https://github.com/coreybutler/nvm-windows/releases) 下载“nvm-update.zip”文件夹并安装,将NVM for Windows升级到1.1.10版本。
之后,使用更新过的NVM删除错误的Node版本(在我的情况下是18.10.0),然后重新安装它。
一切恢复正常。

5
主要问题在于,如果尝试按照步骤安装angular,则将不可避免地遇到此错误,因为推荐的node.js版本是16.14.0版,而node已经告诉您它带有8.3.1版的node版本:node.js截图显示推荐的node版本
为解决此问题,您可以安装node版本16.13.2,该版本附带了npm 8.1.2版本(而不是8.1.3版本),如此处所述:https://nodejs.org/en/download/releases/
注意:我使用nvm。
然后您可以安装angular。
另一种可能性是,如果您想要使用node 16.14.0和angular,则可以升级npm版本。但问题是,当您尝试这样做时,将出现与安装angular时相同的错误。
为解决此问题,我建议:
a)安装使用其他版本npm的先前版本的node,例如带有npm 8.1.2的node 16.13.2。个人在Windows上通过nvm(node版本管理器)拥有多个node版本。
b)复制此node安装的npm包,并将其更改为node 16.14.0的文件夹中的npm 8.1.2版本(在此之前,请删除或重命名旧的npm文件夹)。
c)键入nvm use 16.4.0使用node 16.14.0。
d)输入npm install -g npm@latest以升级npm。
此处可查看命令序列:
首先,重命名npm 8.1.3并粘贴npm 8.1.2:显示npm文件夹的示例
接下来,请参阅MS-DOS控制台中的命令:
C:\Users\AB>npm -v
    8.1.2

 
C:\Users\AB>npm version
    {
      npm: '8.1.2',
      node: '16.14.0',
      v8: '9.4.146.24-node.20',
      uv: '1.43.0',
      zlib: '1.2.11',
      brotli: '1.0.9',
      ares: '1.18.1',
      modules: '93',
      nghttp2: '1.45.1',
      napi: '8',
      llhttp: '6.0.4',
      openssl: '1.1.1m+quic',
      cldr: '40.0',
      icu: '70.1',
      tz: '2021a3',
      unicode: '14.0',
      ngtcp2: '0.1.0-DEV',
      nghttp3: '0.1.0-DEV'
    }
     

C:\Users\AB>npm install -g npm@latest
  
    removed 186 packages, changed 19 packages, and audited 36 packages in 25s
       
found 0 vulnerabilities
     

C:\Users\AB>npm version

{
      npm: '8.5.2',
      node: '16.14.0',
      v8: '9.4.146.24-node.20',
      uv: '1.43.0',
      zlib: '1.2.11',
      brotli: '1.0.9',
      ares: '1.18.1',
      modules: '93',
      nghttp2: '1.45.1',
      napi: '8',
      llhttp: '6.0.4',
      openssl: '1.1.1m+quic',
      cldr: '40.0',
      icu: '70.1',
      tz: '2021a3',
      unicode: '14.0',
      ngtcp2: '0.1.0-DEV',
      nghttp3: '0.1.0-DEV'
    }
        
C:\Users\AB>npm install -g @angular/cli
        
added 189 packages, and audited 191 packages in 1m
             found 0 vulnerabilities

     
C:\Users\AB>ng version
   
         _                      _                 ____ _     ___
        / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
       /  \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
      / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
    /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                    |___/

 

 
    Angular CLI: 13.2.5
    Node: 16.14.0
    Package Manager: npm 8.5.2
    OS: win32 x64
     

Angular:
   
    Package                      Version
    ------------------------------------------------------
    @angular-devkit/architect    0.1302.5 (cli-only)
    @angular-devkit/core         13.2.5 (cli-only)
    @angular-devkit/schematics   13.2.5 (cli-only)
    @schematics/angular          13.2.5 (cli-only)

2

这里可能有些其他答案是正确的。我没有进行调查,尝试了yarn。

在我的情况下,安装npm-check-updates时出现了“Unexpected token '.'”错误,通过使用yarn安装它来解决了这个问题。

yarn global add npm-check-updates


1
我曾经遇到同样的问题,我使用choco在Windows上更好地管理它。解决方法是使用choco卸载nvm并重新安装,然后只需下载并使用最新版本的npm/node。
choco uninstall nvm
choco install nvm
nvm install latest
nvm use [latest]

将[lateset]替换为已安装的最新版本。
这样做后,您应该能够无错误地使用npm命令。

1
我忘记在新的终端中执行 nvm use 命令,结果在系统的默认 nodejs 上运行了该命令。
系统的默认 nodejs 版本比我们用来开发应用程序的版本要旧得多。
执行了 nvm use 后,错误消失了。

0
Angular 16.0.5在Windows上无法与大多数16.x版本的Node一起安装。在我的情况下,我只需要Angular 14(它可以与Node v16.13.1一起使用)。我通过以下步骤重新启动并运行起来:
安装nvm v1.1.11(或更新版本应该也可以)
- https://github.com/coreybutler/nvm-windows(确保按照文档中主页上的任何删除步骤来删除现有的node安装) - 运行nvm安装程序
安装完nvm后,打开命令行并运行以下命令:
- nvm install 16.13.1 - nvm use 16.13.1 - npm i -g @angular/cli@14.2.10(强制降级到可工作的Angular版本)
如果您没有使用NVM:
安装node v16.13.1,然后进行强制降级(npm i -g @angular/cli@14.2.10)也应该可以工作。

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