因此,我首次尝试制作一个新的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
答案 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的全局版本,基本上您将做两件事:
查看问题答案,详细信息在其中。
答案 2 :(得分:2)
可以为将来的参考提供帮助
至少对我来说这项工作。 有时,对文件ng.cmd的引用(对于Win用户而言)格式不正确,您必须调用它并直接传递参数
例如
<放置ng.cmd文件的路径> \ ng.cmd新应用
Running calling ng.cmd file directly
即使您出于任何原因没有管理员权限,它也可以正常工作
答案 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
无论如何,希望这对其他人有帮助。