npm安装后打字不能正常工作

时间:2016-02-26 22:18:16

标签: json node.js npm angular npm-install

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

在所有软件包安装完成后,成功运行“typings install”。

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

6 个答案:

答案 0 :(得分:25)

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

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

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

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

  • %SolutionFolder%\包\ Node.js.5.3.0 \ typings.cmd
  • C:\用户\%的用户名%\应用程序数据\漫游\ NPM \ typings.cmd

答案 3 :(得分:0)

您不需要全局安装打字,以便上述设置正常工作。当您运行npm install时,应在/node_modules/.bin/typings添加一个包含二进制文件的符号链接,并且应该在将/node_modules/.bin添加到PATH环境变量的情况下运行安装后脚本。

查看您的设置,如果您要使用npm install --production安装(或将NODE_ENV环境变量设置为production),则不会安装类型,因为它在devDependencies,这样你就会收到错误。这可能是您问题的真正原因。请查看this question,了解有关如何解决此问题的一些建议。

答案 4 :(得分:0)

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

当我去运行此命令以打字不显示时

npm run typings install

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

npm install typings -g

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

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

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

答案 5 :(得分:0)

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

希望这会对你有所帮助。