如何修复 npm 无法全局安装 typescript 错误

Posted

技术标签:

【中文标题】如何修复 npm 无法全局安装 typescript 错误【英文标题】:How to fix npm failing to globally install typescript error 【发布时间】:2019-05-20 12:09:42 【问题描述】:

尝试使用 npm 全局安装 typescript 时

sudo npm install -g typescript

安装失败,出现以下错误:

ENOENT: no such file or directory, chmod '/usr/local/lib/node_modules/typescript/bin/tsc'

日志的全部内容是

0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node',
1 verbose cli   '/usr/local/bin/npm',
1 verbose cli   'install',
1 verbose cli   '-g',
1 verbose cli   'typescript' ]
2 info using npm@6.5.0
3 info using node@v8.11.4
4 verbose npm-session 631fb36c24f0a08c
5 silly install loadCurrentTree
6 silly install readGlobalPackageData
7 http fetch GET 304 https://registry.npmjs.org/typescript 3969ms (from cache)
8 silly pacote tag manifest for typescript@latest fetched in 4025ms
9 timing stage:loadCurrentTree Completed in 4299ms
10 silly install loadIdealTree
11 silly install cloneCurrentTreeToIdealTree
12 timing stage:loadIdealTree:cloneCurrentTree Completed in 0ms
13 silly install loadShrinkwrap
14 timing stage:loadIdealTree:loadShrinkwrap Completed in 2ms
15 silly install loadAllDepsIntoIdealTree
16 silly resolveWithNewModule typescript@3.2.2 checking installable status
17 timing stage:loadIdealTree:loadAllDepsIntoIdealTree Completed in 5ms
18 timing stage:loadIdealTree Completed in 7ms
19 silly currentTree lib
20 silly idealTree lib
20 silly idealTree └── typescript@3.2.2
21 silly install generateActionsToTake
22 timing stage:generateActionsToTake Completed in 4ms
23 silly diffTrees action count 1
24 silly diffTrees add typescript@3.2.2
25 silly decomposeActions action count 8
26 silly decomposeActions fetch typescript@3.2.2
27 silly decomposeActions extract typescript@3.2.2
28 silly decomposeActions preinstall typescript@3.2.2
29 silly decomposeActions build typescript@3.2.2
30 silly decomposeActions install typescript@3.2.2
31 silly decomposeActions postinstall typescript@3.2.2
32 silly decomposeActions finalize typescript@3.2.2
33 silly decomposeActions refresh-package-json typescript@3.2.2
34 silly install executeActions
35 silly doSerial global-install 8
36 verbose correctMkdir /Users/user/.npm/_locks correctMkdir not in flight; initializing
37 verbose lock using /Users/user/.npm/_locks/staging-3a08f0df5026584d.lock for /usr/local/lib/node_modules/.staging
38 silly doParallel extract 1
39 silly extract typescript@3.2.2
40 timing action:extract Completed in 602ms
41 silly doReverseSerial unbuild 8
42 silly doSerial remove 8
43 silly doSerial move 8
44 silly doSerial finalize 8
45 silly finalize /usr/local/lib/node_modules/typescript
46 timing action:finalize Completed in 3ms
47 silly doParallel refresh-package-json 1
48 silly refresh-package-json /usr/local/lib/node_modules/typescript
49 timing action:refresh-package-json Completed in 14ms
50 silly doParallel preinstall 1
51 silly preinstall typescript@3.2.2
52 info lifecycle typescript@3.2.2~preinstall: typescript@3.2.2
53 timing action:preinstall Completed in 1ms
54 silly doSerial build 8
55 silly build typescript@3.2.2
56 info linkStuff typescript@3.2.2
57 silly linkStuff typescript@3.2.2 has /usr/local/lib/node_modules as its parent node_modules
58 silly linkStuff typescript@3.2.2 is part of a global install
59 silly linkStuff typescript@3.2.2 is installed into a global node_modules
60 silly linkStuff typescript@3.2.2 is installed into the top-level global node_modules
61 verbose linkBins [  tsc: './bin/tsc', tsserver: './bin/tsserver' ,
61 verbose linkBins   '/usr/local/bin',
61 verbose linkBins   true ]
62 timing action:build Completed in 3ms
63 verbose unlock done using /Users/user/.npm/_locks/staging-3a08f0df5026584d.lock for /usr/local/lib/node_modules/.staging
64 timing stage:rollbackFailedOptional Completed in 16ms
65 timing stage:runTopLevelLifecycles Completed in 4956ms
66 verbose stack Error: ENOENT: no such file or directory, chmod '/usr/local/lib/node_modules/typescript/bin/tsc'
67 verbose cwd /Users/user/localserver
68 verbose Darwin 18.2.0
69 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "typescript"
70 verbose node v8.11.4
71 verbose npm  v6.5.0
72 error path /usr/local/lib/node_modules/typescript/bin/tsc
73 error code ENOENT
74 error errno -2
75 error syscall chmod
76 error enoent ENOENT: no such file or directory, chmod '/usr/local/lib/node_modules/typescript/bin/tsc'
77 error enoent This is related to npm not being able to find a file.
78 verbose exit [ -2, true ]

任何帮助将不胜感激!

【问题讨论】:

你的 Linux 版本是什么? 我正在使用 MacOS Mojave 你为什么要sudo-ing?我认为不应该这样做。 在 Mac OS 上全局安装 npm 模块必须使用 sudo。 【参考方案1】:

拉菲。 我建议先使用: 须藤 npm 安装 -g npm sudo npm 清除缓存

正常尝试,如果没有尝试:npm install --no-bin-links typescript

【讨论】:

运行 sudo npm install -g npm 实际上失败了我收到类似的错误 ENOENT: no such file or directory, open '/private/tmp/npm-24943-3e68da42/unpack-a1daac03/node_modules /run-queue/package.json' 在清理缓存之前尝试运行 npm install 我已经运行 npm install 并使用 --force 模式清除了缓存,但现在我尝试安装 npm 时收到错误。【参考方案2】:

我通过在线重新安装 Node JS 解决了这个问题。

在安装此打字稿后没有错误。

【讨论】:

以上是关于如何修复 npm 无法全局安装 typescript 错误的主要内容,如果未能解决你的问题,请参考以下文章

npm全局安装失效修复

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

npm学习笔记-修复npm权限问题

如何修复 npm start “无法确定原生 SDK 版本”错误?

npm 无法安装全局包?

nodejs把配置转ts