我尝试编写一个脚本,将 npm_modules 安装在当前工作目录以外的其他位置。这是为了反映我们的工作流程,即二进制文件保存在另一个驱动器上,而不是我们开发时定期备份的虚拟驱动器上。
我尝试通过根据当前目录临时设置目标目录的位置来做到这一点
npm config set prefix "!targetDir!"
(以镜像另一个驱动器上的文件路径)。
我现在意识到,对于 Windows 来说,这可能是错误的命令(我现在想使用npm install --prefix ./install/here <package>
本问答中描述的方法https://stackoverflow.com/questions/14469515/how-to-npm-install-to-a-specified-directory)。这是我第一次使用批处理脚本syntax error
。我不记得路径是否正确,我只是通过 ctrl-z-ing 找到了它。我首先通过双击运行它。意识到我错过了错误消息,我在终端中运行它,这是我第一次看到syntax error
SETLOCAL EnableDelayedExpansion
SET "currentDir=%cd%"
FOR /f "tokens=3,7 delims=/" %%a in ("%currentDir%") do (
SET "branchName=%%a"
SET "repoName=%%b"
)
SET "targetDir=O:\!branchName!\productname\!repoName!"
IF NOT EXIST "!targetDir!" (
mkdir "!targetDir!"
)
echo RepoName: !repoName!, BranchName: !branchName!, TargetDir: !targetDir!
npm config set prefix "!targetDir!"
npm install
npm config delete prefix
ENDLOCAL
npm config set prefix "!targetDir!"
我想,自从我在脚本中使用了这行代码后,syntax error
无论我尝试什么,我都会得到一个结果。如果这行代码不可能是罪魁祸首,那么我又测试了几次脚本迭代,然后才意识到 npm 不再起作用,我也可以分享这一点。
现在我只需输入npm
powershell/terminal 即可,但它总是返回语法错误。不过当我使用 git bash 时,它确实有效!
我尝试多次重新安装 nodejs,尝试通过 git bash 更新 npm 安装,使用 windows 卸载 nodejs,并手动删除 C:/User/Program Files/nodejs 中的 nodejs 文件夹。我还暂时删除了 %AppData%/Roaming 中的 npm 文件夹。我还从路径中删除了 npm。我检查了调用的脚本 (npm.cmd),并从我的私人电脑中复制了一个工作版本。我还尝试使用 chocolatey 重新安装 nodejs。
我有时会在执行这些步骤之间重启电脑,但不是每次都重启。每当我尝试检查 npm 是否再次运行时,我总是打开一个新的终端实例。
但我仍然得到相同的输出:(
Syntaxfehler.
或者syntax error
,我只是希望尽可能精确)
答案1
解决方案:我进入 %AppData%\Roaming\npm 并直接在其中运行 npm,它成功了。然后我使用npm config delete prefix
npm,它又可以使用了。
问题出在哪里?我成功地在前缀中保存了一个路径,但由于我的两个变量(branchname
和reponame
)为空,它看起来像。此路径被标记为包含非法字符,尽管我不确定为什么。我发现,通过尝试在 AppData 文件夹中O:\projectname
设置路径。npm update -g npm
我仍然不知道这些持久数据位于何处。