没 关 系 , 我 在 Windows 上 修复 了 “Unexpected token ‘.’(点错误)” 的故事
nvm是一个用于管理Node.js版本的工具,当想要使用多个Node.js或npm版本时非常方便。然而,在Windows版中,nvm 1.1.7版本会出现以下错误。在GitHub上似乎也进行了长时间的讨论。
$npm init
npm ERR! Unexpected token '.'
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\****\AppData\Local\npm-
cache\_logs\2022-05-19T13_51_46_969Z-debug-0.log
我将保留下努力修复那一部分历史记录的痕迹
规格
Windows10
nvm v1.1.7(也有一些人在v1.1.9上遇到错误…)
node v16.15.0
在中文中,只需要一個選項去對以下內容進行本地化的改寫:
戶口增長率
只要满足以下的规格,任务就完成了。
$nvm -v
Running version 1.1.7.
$node -v
v16.15.0 (2022年5月現在のLTS)
$npm -v
8.5.5
$npm init
package name: (test) #この行が出てほしい
解决方案
暫時來說,當出現「Unexpected token ‘.’」錯誤時的錯誤日誌大致如下:
28 verbose stack C:\Users\****\AppData\Roaming\nvm\v16.15.0\node_modules\npm\node_modules\libnpmexec:1
28 verbose stack ../workspaces/libnpmexec
28 verbose stack ^
28 verbose stack
原来如此,如果上一级目录指示符号点没有响应的话。那就用批处理文件来改写吧。
看起来符号链接还是保持着Linux的样式。
那么,如果将相对路径改为绝对路径的话,应该可以工作的。所以我尝试创建了一份我擅长的批处理文件。
@echo off
rem キーボード入力
set INPUT_VERSION=
set /P INPUT_VERSION="対象のnodejsバージョンを入力してください(例:16.15.0): "
rem 遅延環境変数を設定
setlocal ENABLEDELAYEDEXPANSION
rem ディレクトリ移動
cd %NVM_HOME%\v%INPUT_VERSION%\node_modules\npm\node_modules
rem 今回対象となるlibnpmで始まるファイルをfor文で処理
for %%a in (libnpm*) do (
rem 変数に上書きしたいパスを代入
set line="%NVM_HOME%\v%INPUT_VERSION%\node_modules\npm\workspaces\%%a"
rem ファイルを上書き
echo !line! > %%a
)
echo 上書きに成功しました。
pause
exit /b
endlocal
我花了5个小时的时间,但总算是成功解决了与符号链接的斗争!我试了许多方法,比如在Windows上使用双反斜杠,或者倒斜杠等等,但最终证明使用双引号将绝对路径括起来才是正确的方法。哎呀~问题解决了真是太好了!如果你不想在自己的环境中重新安装nvm之类的话,务必使用这个解决方法!!!
附言。
希望能够将包括Node.js版本的路径作为变量获取,但是这次只能按所找到的方式,所以路径变得非常长。我会在有时间的时候再进行搜索(应该有的)。如果有人知道的话,请随意留下评论,谢谢。