npm post-安装类型无法正常工作

npm post-install typings not working correctly

我有以下 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"
}
}

在所有软件包安装完成后 运行s "typings install" 成功。

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

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

Gabe O'Leary is right (see ), 首先尝试全局安装 typings npm install typings -g 如果你使用 mac 你可能需要使用 sudo 命令 sudo npm install typings -g

哦,Em Gee。这个工具太脆弱了!

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 是一个 "global" 安装,因此即使您希望它成为单个项目的一部分(例如,您希望能够签出并构建一个项目),太糟糕了!您必须使用解决方案范围的 package.json 文件检查解决方案,以获取您的项目工具链。

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

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

那么,解决方案是什么?就我个人而言,我将把 "typings install" 插入到我的 gulp.js "run on project startup" 事件中,并将其设置为针对特定项目的 "typings" 包。现在我们可以签出并构建一个项目,团队中没有人需要能够 运行 "typings install" 在命令行或包管理器控制台,除了一个负责维护它的人。

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

  • %SolutionFolder%\packages\Node.js.5.3.0\typings.cmd
  • C:\Users\%用户名%\AppData\Roaming\npm\typings.cmd

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

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

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

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

npm run typings install

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

npm install typings -g

对我来说,问题是在一份工作中,我继承了一个 .typingsrc 文件,尽管它不在我所在的文件夹中 运行ning npm install 等等.. 在 中,它一定决定查看上面的一个或两个目录,因此难怪我会收到错误。

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

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

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

希望对您有所帮助。