【问题标题】:Cannot read property 'startsWith' of null in npm install无法在 npm install 中读取 null 的属性“startsWith”
【发布时间】:2021-01-26 23:31:38
【问题描述】:

我到处搜索这个问题。但还是找不到答案。大多数答案都说代理有问题。当我尝试使用npm install -g package-name 时发生错误。

npm ERR! Cannot read property 'startsWith' of null
npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\User\AppData\Roaming\npm-cache\_logs\2018-03-27T14_55_06_994Z-debug.log

这是 .log 文件

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'install',
1 verbose cli   '-g',
1 verbose cli   '@angular/cli' ]
2 info using npm@5.6.0
3 info using node@v8.10.0
4 verbose npm-session bd0a5d284789daec
5 silly install loadCurrentTree
6 silly install readGlobalPackageData
7 silly fetchPackageMetaData error for @angular/cli@latest Cannot read property 'startsWith' of null
8 verbose stack TypeError: Cannot read property 'startsWith' of null
8 verbose stack     at getProxy (C:\Program Files\nodejs\node_modules\npm\node_modules\pacote\node_modules\make-fetch-happen\agent.js:164:25)
8 verbose stack     at getAgent (C:\Program Files\nodejs\node_modules\npm\node_modules\pacote\node_modules\make-fetch-happen\agent.js:37:19)
8 verbose stack     at remoteFetch (C:\Program Files\nodejs\node_modules\npm\node_modules\pacote\node_modules\make-fetch-happen\index.js:310:17)
8 verbose stack     at opts.cacheManager.match.then.res (C:\Program Files\nodejs\node_modules\npm\node_modules\pacote\node_modules\make-fetch-happen\index.js:172:14)
8 verbose stack     at tryCatcher (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\util.js:16:23)
8 verbose stack     at Promise._settlePromiseFromHandler (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:512:31)
8 verbose stack     at Promise._settlePromise (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:569:18)
8 verbose stack     at Promise._settlePromise0 (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:614:10)
8 verbose stack     at Promise._settlePromises (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:693:18)
8 verbose stack     at Promise._fulfill (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:638:18)
8 verbose stack     at Promise._resolveCallback (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:432:57)
8 verbose stack     at Promise._settlePromiseFromHandler (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:524:17)
8 verbose stack     at Promise._settlePromise (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:569:18)
8 verbose stack     at Promise._settlePromise0 (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:614:10)
8 verbose stack     at Promise._settlePromises (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:693:18)
8 verbose stack     at Promise._fulfill (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:638:18)
9 verbose cwd C:\
10 verbose Windows_NT 10.0.16299
11 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "@angular/cli"
12 verbose node v8.10.0
13 verbose npm  v5.6.0
14 error Cannot read property 'startsWith' of null
15 verbose exit [ 1, true ]

版本 节点 - 8.10.0 npm - 5.6.0

【问题讨论】:

  • 执行此命令时看到的输出npm get registry
  • 我的输出 - registry.npmjs.org
  • 你试过thispost中提供的解决方案吗
  • 我试过了。但这对我不起作用。而且我还在 Windows 上运行这些命令。

标签: node.js angular npm


【解决方案1】:

经过两天的努力,我终于找到了答案。 我在 npm 的配置中没有设置代理。这就是为什么当我尝试npm config get proxy 时它为空。但是在我的电脑中设置了两个环境变量,分别是 http-proxy 和 https-proxy。但我不知道它们是如何设置在那里的。所以我删除了这些变量。现在我的 npm install 工作正常。

【讨论】:

  • 哇.. 这对我有帮助。谢谢。
  • 你能给我.npmrc文件的路径吗
【解决方案2】:

我遇到了这个问题,因为我手动删除了.npmrc 文件中的https-proxy 和proxy 设置。在我把它加回来之后,一切都开始工作了。

【讨论】:

  • 你能给我.npmrc文件的路径吗
  • 在 Windows 上:%USERPROFILE%\.npmrc
【解决方案3】:

我在使用 Docker (v18.09.0) 构建 Angular 6 映像时遇到了这个问题。

节点和 Docker 环境的代理变量导致了问题。解决方案是重置httpProxy 变量值,如下所述:Docker doc。另外,设置项目特定的.npmrc 喜欢:gist 并修复npm 权限问题:gist

最后,我的Dockerfile 看起来像:

FROM node:10.14.2-alpine
###
#Issue: 'Cannot read property 'startsWith' of null in npm install' error
#Reason: Proxy variables of node and Docker environment were causing the problem.
#Solution: Modify httpProxy variable value as told here: https://docs.docker.com/network/proxy/#configure-the-docker-client
# Also, set project specific .npmrc like : https://gist.github.com/nikhilbchilwant/7243ea4c6f35f28fb44376dac675d285

#RUN apk add tree

WORKDIR /home/node/aas-ui

#Fix for npm permission issue: https://github.com/angular/angular/blob/f8096d499324cf0961f092944bbaedd05364eea1/tools/ngcontainer/Dockerfile#L51
RUN mkdir /home/node/.npm-global \
 && npm config set prefix '/home/node/.npm-global' \
 && echo "export PATH=/home/node/.npm-global/bin:$PATH" >> /home/node/.profile
RUN source /home/node/.profile

RUN chown -R node $(npm config get prefix)
RUN chown -R node /home/node/aas-ui
USER node

COPY src ./src/
COPY e2e ./e2e/
COPY .angular-cli.json ./angular-cli.json
COPY protractor.conf.js ./protractor.conf.js
COPY karma.conf.js ./karma.conf.js
COPY tslint.json ./tslint.json
COPY package.json .
COPY angular.json .
COPY .npmrc .
RUN npm install --verbose
RUN npm build --verbose

我希望这对某人有所帮助。

【讨论】:

    【解决方案4】:

    也许你可以试试 npm config 设置注册表https://registry.npmjs.org

    【讨论】:

      【解决方案5】:

      我必须设置我的 http 和 https 代理,以便 npm 可以获取包

      npm config set proxy http://[IP]:[port]

      npm config set https_proxy http://[IP]:[port]

      然后npm i 为我安装了所有的包。

      干杯!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-30
        • 1970-01-01
        • 2022-07-27
        • 1970-01-01
        • 2017-04-30
        • 2021-10-26
        • 1970-01-01
        相关资源
        最近更新 更多