npm 安装后类型无法正常工作

Posted

技术标签:

【中文标题】npm 安装后类型无法正常工作【英文标题】:npm post-install typings not working correctly 【发布时间】:2016-06-10 07:43:57 【问题描述】:

我有以下 packages.json:


"name": "shopping-assistant-angular",
"version": "1.0.0",
"scripts": 
    "start": "concurrent \"npm run tsc:w\" \"npm run lite\" ",    
    "tsc": "tsc",
    "tsc:w": "tsc -w",
    "lite": "lite-server",
    "typings": "typings",
    "postinstall": "typings install" 
,
"license": "ISC",
"dependencies": 
    "angular2": "2.0.0-beta.7",
    "systemjs": "0.19.23",
    "es6-promise": "^3.0.2",
    "es6-shim": "^0.33.3",
    "reflect-metadata": "0.1.2",
    "rxjs": "5.0.0-beta.2",
    "zone.js": "0.5.14"
,
"devDependencies": 
    "bower": "^1.7.7",
    "concurrently": "^1.0.0",
    "grunt": "^0.4.5",
    "grunt-chrome-manifest": "^0.3.0",
    "grunt-contrib-clean": "^1.0.0",
    "grunt-contrib-concat": "^0.5.1",
    "grunt-contrib-copy": "^0.8.2",
    "grunt-contrib-cssmin": "^0.14.0",
    "grunt-contrib-htmlmin": "^0.6.0",
    "grunt-contrib-uglify": "^0.11.1",
    "grunt-filerev": "^2.3.1",
    "grunt-ts": "^5.3.2",
    "grunt-usemin": "^3.1.1",
    "lite-server": "^2.0.1",
    "load-grunt-tasks": "^3.4.0",
    "typescript": "1.7.5",
    "typings": "^0.6.8"


当我在我的目录中运行 npm install 时出现错误:'typings' is not recognized as an internal or external command, operable program or batch file.

在 Angular 2 快速入门指南中,他们使用以下 packages.json:


"name": "angular2-quickstart",
"version": "1.0.0",
"scripts": 
    "start": "concurrent \"npm run tsc:w\" \"npm run lite\" ",    
    "tsc": "tsc",
    "tsc:w": "tsc -w",
    "lite": "lite-server",
    "typings": "typings",
    "postinstall": "typings install" 
,
"license": "ISC",
"dependencies": 
    "angular2": "2.0.0-beta.7",
    "systemjs": "0.19.22",
    "es6-promise": "^3.0.2",
    "es6-shim": "^0.33.3",
    "reflect-metadata": "0.1.2",
    "rxjs": "5.0.0-beta.2",
    "zone.js": "0.5.15"
,
"devDependencies": 
    "concurrently": "^2.0.0",
    "lite-server": "^2.1.0",
    "typescript": "^1.7.5",
    "typings":"^0.6.8"


在所有软件包安装完成后成功运行“打字安装”。

不知道为什么运行这些非常相似的 packages.json 文件会导致完全不同的结果。

【问题讨论】:

【参考方案1】:

Gabe O'Leary是对的(见comment),先尝试全局安装typings npm install typings -g 如果您使用的是 mac,您可能需要使用 sudo 命令 sudo npm install typings -g

【讨论】:

我应该回答我自己的问题。谢谢你【参考方案2】:

我遇到了同样的问题。您需要在项目文件夹中添加 typings.json 文件。请查看此链接:https://angular.io/guide/quickstart

【讨论】:

我的文件夹中确实有一个 typings.json 文件,这是因为我没有全局安装 Typings npm install typings -g 解决了我的问题 总是检查文件名...我不小心命名了我的 typing.json 而不是 typings.json。这有帮助!【参考方案3】:

在 ionic 2 中,我在窗口 10 上遇到了同样的问题,然后我尝试了 npm install typings -g , 安装后我尝试了打字命令,哇,它工作了, 我正在使用带有 socket.io 的 ionic 2,我需要运行typings install dt~socket.io-client --save --global, 现在它正在工作。

希望这会对你有所帮助。

【讨论】:

您好,请在代码中添加一些格式。请查看***.com/help/formatting 了解更多信息。【参考方案4】:

哦,哎呀。这个工具太脆弱了!

PowerShell ->
  OS %PATH% spec ->
    Node.js bin folder (which one?) ->
      typings.cmd ->
        Tools : Options : Projects and Solutions : External Web Tools ->
          node.js bin ->
            Typings javascript files ->
              PowerShell working directory (vs. project path) ->
                typings.json configuration ->

请注意,npm install typings -g 是“全局”安装,因此即使您希望它成为单个项目的一部分(例如,您希望能够签出并构建单个项目),也一样坏的!您必须使用解决方案范围的 package.json 文件签出解决方案,才能获取您的项目工具链。

请注意,默认的 Typings 安装会修改 Node.js 二进制文件夹。因此,如果您有多个 Node.js 安装(您可能至少安装了三个,一个使用 VS update 2 安装,至少一个使用 NuGet 安装,一个或多个安装为单独的 Node.js 安装以克服旧版本中的缺陷可从其他两个来源获得),您的痛苦已经开始。

此外,您的一些开发团队根据各种 MS 支持文章修改了他们的外部 Web 工具目录来解决这个问题,并且您的团队中的一些成员安装了不同的 Node.js 版本,等等。现在您的痛苦越来越大真的……

那么,解决方案是什么?就我个人而言,我将把“typings install”插入到我的 gulp.js“在项目启动时运行”事件中,并将其设置为针对特定于项目的“typings”包。现在我们可以签出并构建一个项目,团队中的任何人都不需要能够在命令行或包管理器控制台上运行“打字安装”,除了负责维护它的人。

这些路径也可能对您有所帮助。在我进行大部分诊断的机器上升级期间的不同时间点,npm install typings -g 在不同的目录中放置了一个typings.cmd 文件:

%SolutionFolder%\packages\Node.js.5.3.0\typings.cmd C:\Users\%username%\AppData\Roaming\npm\typings.cmd

【讨论】:

【参考方案5】:

您不需要全局安装类型来使上述设置正常工作。当您运行npm install 时,应在/node_modules/.bin/typings 添加指向typings 二进制文件的符号链接,并且应在将/node_modules/.bin 添加到PATH 环境变量的情况下运行安装后脚本。

但是,查看您的设置,如果您要安装 npm install --production(或将 NODE_ENV 环境变量设置为 production),则不会像在 devDependencies 中那样安装类型,所以您然后会得到错误。这可能是您的问题的真正原因。请查看this question 以获取有关如何解决此问题的一些建议。

【讨论】:

angular.io 教程曾经提到过运行 npm install typings -g 但现在不再需要,因为他们设置了新的 package.json 文件。 您是否能够弄清楚为什么其中一个 package.json 有效而另一个无效?如果您的NODE_ENV 环境变量设置为production,您也可以生成--production 类型。 (我已将其编辑到我的答案中)【参考方案6】:

我倾向于使用嵌套的 angular 1 和 angular 2 解决方案,最终将它们存储在 Git 存储库中......

当我去运行这个命令输入不显示时

npm run typings install

那没有用。然后我找到了这个***页面并尝试了

npm install typings -g

对我来说,问题是在 JOB 中,我继承了一个 .typingsrc 文件,即使它不在我运行 npm install 等的文件夹中,它也一定决定看起来目录或 2 以上,因此难怪我得到了错误。

我只是将其重命名为 old.typingsrc ,因为内部目的是绕过代理 proxy="http://proxy-chain.company.com:911"

这可能对很多人没有帮助,但我认为它可能会帮助其他人拥有代理

【讨论】:

以上是关于npm 安装后类型无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

将类型更改为 Windows 应用程序后应用程序无法正常工作

npm install chromedriver 无法正常工作

在 WSL2 中:安装了适用于 Windows 10 nodejs 的 Ubuntu 20.04,但 npm 无法正常工作

npm install serialport无法正常工作

输入类型 = 数字验证在角度中无法正常工作

无法通过 npm 全局卸载 typescript