当我运行“ npm run ng new app”时,谁能解释这个错误?

时间:2018-09-10 20:46:40

标签: node.js angular npm

因此,我首次尝试制作一个新的angular应用程序,并使用npm i -g @angular/cli安装了它。当我尝试使用npm run ng new app制作新应用时,出现以下错误:

  

npm错误!路径E:\ ddii \ package.json
  npm ERR!代码ENOENT
  npm ERR! errno -4058
  npm ERR! syscall打开
  npm ERR! enoent ENOENT:没有这样的文件或目录,打开'E:\ ddii \ package.json'
  npm ERR! enoent这与npm无法找到文件有关。   npm ERR!

     

npm错误!可以在以下位置找到此运行的完整日志:
  npm ERR! C:\ Users ... \ AppData \ Roaming \ npm-cache_logs \ 2018-09-10T20_22_50_118Z-debug.log

enter image description here enter image description here

4 个答案:

答案 0 :(得分:3)

简而言之,您正在错误地运行命令。从命令前面删除npm run,它应该可以工作。

当您说npm run blah时,npm在package.json中查找名为blah或在您的情况下为ng的脚本。因此,...如果您正在运行npm run ng new app,npm希望当前目录中有一个package.json,并且在该package.json中,npm需要一个名为ng的脚本。因此,如果您当前的目录中没有package.json,那么您将得到一个错误。

相反,请关闭您的终端,然后打开一个新终端,然后简单地运行ng new app

答案 1 :(得分:2)

如果要在没有npm run ...的情况下运行它,则需要全局安装ng,我会做npm install -g @angular/cli,但是我在运行linux,对于Windows我已经找到了该线程{{ 3}}

它应该可以帮助您安装angular-cli的全局版本,基本上您将做两件事:

  1. 全局安装angular-cli(如果没有的话)。
  2. 确保它在您的环境变量的PATH中。

查看问题答案,详细信息在其中。

答案 2 :(得分:2)

可以为将来的参考提供帮助

至少对我来说这项工作。 有时,对文件ng.cmd的引用(对于Win用户而言)格式不正确,您必须调用它并直接传递参数

例如

<放置ng.cmd文件的路径> \ ng.cmd新应用

Running calling ng.cmd file directly

It says: ' "ng" is not recognized as an internal or external command, operable program or batch file.'

即使您出于任何原因没有管理员权限,它也可以正常工作

答案 3 :(得分:0)

我自己很难找到这个答案,因为这个问题的其他答案没有解决真正的潜在问题。

所有其他答案都建议使用 (npm i -g ...) 全局安装 ng,副作用是 ng 的符号链接将在您的 PATH 上。

基于 OP 的问题,我承认他很可能试图从全局安装的 ng 中构建一个新的 Angular 应用程序。所以这解决了人们 90% 的问题,而且一切都很好。

然而,我想使用本地安装的 ng,这就是为什么我在我的 package.json 中有一个 npm-script

{
...
  "scripts": {
...
    "ng": "ng",
...
}

如果这和我的一样描述了您的用例,请继续阅读。

npm run ng update 对我来说成功了,而其他带有更多参数的更复杂的命令——包括命令行开关——完全失败 (npm run ng -- update @angular/cli --migrate-only tslint-version-6)。

答案在于您必须使用 npm run-script 分隔传递给 -- 的参数的开始(参见 https://stackoverflow.com/a/14404223/1438576):

npm run ng -- update @angular/cli --migrate-only tslint-version-6

所以在 OP 的情况下,假设他已经有一个带有 package.json 的本地安装的 ng 副本(我承认这是值得怀疑的),他本可以这样做:

npm run ng -- new app

无论如何,希望这对其他人有帮助。