为啥 npm 试图在错误的目录中找到 package.json?

Posted

技术标签:

【中文标题】为啥 npm 试图在错误的目录中找到 package.json?【英文标题】:Why npm tries to find package.json in the wrong directory?为什么 npm 试图在错误的目录中找到 package.json? 【发布时间】:2016-07-28 09:02:57 【问题描述】:

我有一个带有 TypeScript、Angular 和几个依赖项的网络应用程序。

npm 当然也在这里。 package.json 是从 npm init 的乞讨中引入项目的,现在看起来是这样的:


  "name": "myApp",
  "version": "0.0.8-d",
  "description": "Web App",
  "author": "Author",
  "license": "ISC",
  "repository": 
    "type": "git",
    "url": "MYURL"
  ,
  "bugs": 
    "url": "MYURL"
  ,
  "homepage": "MYURL",
  "browserify": 
    "transform": [
      "debowerify"
    ]
  ,
  "dependencies": 
    "malihu-custom-scrollbar-plugin": "^3.1.3"
  ,
  "devDependencies": 
    "browserify": "~13.0.0",
    "connect-history-api-fallback": "^1.2.0",
    "connect-modrewrite": "^0.8.2",
    "debowerify": "~1.2.0",
    "gulp": "^3.9.1",
    "gulp-autoprefixer": "^3.1.0",
    "gulp-clean-css": "^2.0.4",
    "gulp-concat": "^2.6.0",
    "gulp-connect": "^3.2.2",
    "gulp-less": "^3.0.5",
    "gulp-ng-annotate": "^2.0.0",
    "gulp-sass": "^2.2.0",
    "gulp-sourcemaps": "^1.6.0",
    "gulp-typescript": "^2.12.2",
    "gulp-uglify": "^1.5.3",
    "jasmine": "^2.4.1",
    "run-sequence": "^1.1.5",
    "typescript": "^1.8.9",
    "vinyl-source-stream": "^1.1.0"
  ,
  "scripts": 
    "test": "echo \"Error: no test specified\" && exit 1"
  

我的文件结构也是这样的:

Root
|-- tscode
|-- compiled
|-- html_files
|-- node_modules
|-- libs
| package.json

这个想法是 npm 似乎工作正常,一切都安装正确我可以添加/删除依赖项但我总是让这个工作:

npm WARN enoent ENOENT: no such file or directory, open '/Projects/MyApp/tscode/package.json'

package.json 应该在根文件夹中,但我仍然收到这个非常烦人的警告。如您所见,npm 在内部一级文件夹中搜索 json 文件,而不是在根目录中。

如果我这样做: npm list --depth=0

然后我得到了我的依赖项的正确列表,但也:-> /Projects/MyApp/innerfolder extraneous error: ENOENT: no such file or directory, open '/Projects/MyApp/tscode/package.json

有什么想法吗?

节点版本:v5.10.1 npm 版本:3.8.5

注意:无论操作系统,我团队中的每个人都会发生这种情况。

更新: 似乎 npm 存在错误。 npm 存储库中有一些未解决的问题,例如:

https://github.com/npm/npm/issues/9633 https://github.com/npm/npm/issues/10004

如果有什么变化,我会用答案更新问题(如果提供)

【问题讨论】:

运行npm命令时,你的工作目录是不是你项目的根目录? 是的,我在根文件夹中。 如果你运行npm list --depth=0会发生什么? 【参考方案1】:

试试这个:

Delete node_modules folder

然后运行:

$ npm cache clean
$ npm install

【讨论】:

以上是关于为啥 npm 试图在错误的目录中找到 package.json?的主要内容,如果未能解决你的问题,请参考以下文章

NPM 启动错误上的 ENOENT。为啥我会收到此错误,为啥要查找“我的图片”目录?

由于 npm 未导航到不正确的目录,无法运行服务器。并找到 package.jason

Gulp 错误(未找到模块)

为啥 webpack 在运行 npm run dev 时会报错

npm 脚本使用 package.json 中指定的版本重命名文件

我应该在 NPM package.json 中将我的“启动”脚本设置为啥?