【问题标题】:unknown error on npm install "npm ERR! Unexpected token '.'" on using NVM-Windows, Node v17, NPM v8使用 NVM-Windows、Node v17、NPM v8 时 npm install "npm ERR! Unexpected token '.'" 出现未知错误
【发布时间】:2022-05-01 04:48:24
【问题描述】:

这似乎是一个半常见的错误,但我不清楚是什么原因造成的。我想知道导致此错误的原因以及如何解决。

使用 NVM 我安装了 Node @latest(版本 17.4.0),它安装了 npm 的匹配最新版本(v8.3.1)。

PS C:\myRepo> node -v
v17.4.0
PS C:\myRepo> npm -v
8.3.1
PS C:\myRepo> nvm list

  * 17.4.0 (Currently using 64-bit executable)
    17.0.0
    15.6.0
    14.18.3
    14.15.4
    12.20.1

然后我从 npm 安装包依赖项,无论包名称如何,它都会给我一个错误:

PS C:\myRepo> npm install -g npm
npm ERR! Unexpected token '.'

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\yodama\AppData\Local\npm-cache\_logs\2022-01-25T16_38_44_607Z-debug-0.log

我们可以看到完整的调试日志:

0 verbose cli [
0 verbose cli   'C:\\Program Files\\nodejs\\node.exe',
0 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
0 verbose cli   'install',
0 verbose cli   '-g',
0 verbose cli   'npm'
0 verbose cli ]
1 info using npm@8.3.1
2 info using node@v17.4.0
3 timing npm:load:whichnode Completed in 0ms
4 timing config:load:defaults Completed in 1ms
5 timing config:load:file:C:\Users\yodama\AppData\Roaming\nvm\v17.4.0\node_modules\npm\npmrc Completed in 3ms
6 timing config:load:builtin Completed in 3ms
7 timing config:load:cli Completed in 3ms
8 timing config:load:env Completed in 0ms
9 timing config:load:project Completed in 3ms
10 timing config:load:file:C:\Users\yodama\.npmrc Completed in 4ms
11 timing config:load:user Completed in 4ms
12 timing config:load:file:C:\Program Files\nodejs\etc\npmrc Completed in 0ms
13 timing config:load:global Completed in 0ms
14 timing config:load:validate Completed in 0ms
15 timing config:load:credentials Completed in 1ms
16 timing config:load:setEnvs Completed in 1ms
17 timing config:load Completed in 19ms
18 timing npm:load:configload Completed in 20ms
19 timing npm:load:setTitle Completed in 1ms
20 timing config:load:flatten Completed in 4ms
21 timing npm:load:display Completed in 7ms
22 verbose logfile C:\Users\yodama\AppData\Local\npm-cache\_logs\2022-01-25T16_38_44_607Z-debug-0.log
23 timing npm:load:logFile Completed in 13ms
24 timing npm:load:timers Completed in 0ms
25 timing npm:load:configScope Completed in 0ms
26 timing npm:load Completed in 42ms
27 verbose stack C:\Users\yodama\AppData\Roaming\nvm\v17.4.0\node_modules\npm\node_modules\libnpmfund:1
27 verbose stack ../workspaces/libnpmfund
27 verbose stack ^
27 verbose stack
27 verbose stack SyntaxError: Unexpected token '.'
27 verbose stack     at Object.compileFunction (node:vm:352:18)
27 verbose stack     at wrapSafe (node:internal/modules/cjs/loader:1026:15)
27 verbose stack     at Module._compile (node:internal/modules/cjs/loader:1061:27)
27 verbose stack     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1149:10)
27 verbose stack     at Module.load (node:internal/modules/cjs/loader:975:32)
27 verbose stack     at Function.Module._load (node:internal/modules/cjs/loader:822:12)
27 verbose stack     at Module.require (node:internal/modules/cjs/loader:999:19)
27 verbose stack     at require (node:internal/modules/cjs/helpers:102:18)
27 verbose stack     at Object.<anonymous> (C:\Users\yodama\AppData\Roaming\nvm\v17.4.0\node_modules\npm\lib\utils\reify-output.js:16:38)
27 verbose stack     at Module._compile (node:internal/modules/cjs/loader:1097:14)
28 verbose cwd C:\myRepo
29 verbose Windows_NT 10.0.22000
30 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "npm"
31 verbose node v17.4.0
32 verbose npm  v8.3.1
33 error Unexpected token '.'
34 verbose exit 1
35 timing npm Completed in 262ms
36 verbose code 1

使用 nvm for windows 切换到 Node 14 解决了这个问题:


PS C:\myRepo> nvm use 14.18.3
Now using node v14.18.3 (64-bit)
PS C:\myRepo> node -v 
v14.18.3
PS C:\myRepo> npm -v
6.14.15
PS C:\myRepo> npm i -g @microsoft/rush
npm WARN deprecated @opentelemetry/types@0.2.0: Package renamed to @opentelemetry/api, see https://github.com/open-telemetry/opentelemetry-js
C:\Program Files\nodejs\rush -> C:\Program Files\nodejs\node_modules\@microsoft\rush\bin\rush
C:\Program Files\nodejs\rushx -> C:\Program Files\nodejs\node_modules\@microsoft\rush\bin\rushx
+ @microsoft/rush@5.61.1
added 286 packages from 296 contributors in 26.69s

这里出了什么问题?这是 NVM 问题,还是 npm 8.x 问题?我需要在 Node v17 中针对特定错误进行测试,因此仅使用旧版本的 Node 不是可行的解决方法。

【问题讨论】:

  • 我在这里得到完全相同的东西,完全相同的日志(libnpmfund 文件中的无效开头 .。使用 NVM 安装节点 17.4.0,当我尝试执行 npm install 时出现错误.
  • 这是由github.com/npm/cli/issues/4340跟踪的

标签: node.js windows npm nvm


【解决方案1】:

将 NVM-Windows 更新到最新版本,即现在 1.1.9

他们已经解决了这个问题,Workspace 文件夹必须是符号链接。

问题出在 NVM-Windows 而不是 NPM

【讨论】:

  • 我已经升级到版本,并没有解决问题。
  • 我还需要卸载已经安装的node并重新安装(使用新的nvm
【解决方案2】:

使用较低版本的节点。

nvm list -> 查看已安装的节点版本。

nvm use &lt;-version number-&gt;

再次运行npm install

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    相关资源
    最近更新 更多