【问题标题】:npm ERR! Could not install from as it does not contain a package.json file angular firebase functionsnpm 错误!无法安装,因为它不包含 package.json 文件 angular firebase 函数
【发布时间】:2020-09-07 16:31:12
【问题描述】:

我正在使用 "firebase-functions": "^3.6.0", "firebase-tools": "^8.0.0" 来部署我的 Angular:10.0.14 应用程序。一切正常,直到我决定将一些组件移动到使用命令ng generate library 创建的库中,并将包作为./projects/my-lib 下的项目中的子模块

我使用 ng build my-lib 构建库

然后在我的package.json 中安装了文件中的库

"my-lib": "file:dist/my-lib"

我在本地安装了这个包,当我在本地测试它时它工作正常,但是使用 ng deploy 进行部署引发了错误

npm ERR! Could not install from "dist/mce-lib" as it does not contain a package.json file.

我已经尝试了一些我在网上找到的解决方案,但还没有成功

【问题讨论】:

    标签: node.js angular firebase


    【解决方案1】:

    您需要使用创建库

      ng generate library <your lib name>
    

    这将为您的库设置必要的文件,以便您可以将其添加为依赖项。

    否则,如果您想手动执行此操作,则需要更多工作。

    更新:

    为了能够在不发布的情况下在本地使用上面的库,您需要执行以下操作

    从生成 lib 的 app 目录进入 ./projects/,因为它是由上面的 lib 命令生成的。然后运行以下构建命令

      ng build <your lib name> --prod
    

    prod 标签是可选的,但它有助于在该标志中运行您的代码,以便它最接近发布后的样子

    然后返回到您的应用程序根文件夹并通过引用 dist 文件夹来安装应用程序。上面的构建命令应该已经将你的 lib 添加为它自己的文件夹 with dist

      npm install ./dist/<your lib name>
    

    注意:所有这些都是出于开发测试目的。理想情况下,您需要先将 lib 发布到 npmjs 或 github 包,然后将其正确安装到您的应用中,然后再将应用部署到生产环境

    本地的另一种方式:虽然使用 npm 链接

       cd ./dist/<your lib name>
       npm link
    

    然后回到app的根文件夹,你应该可以运行安装了

      npm link <your lib name>
    

    这会在您的应用程序中创建一个指向您的库的本地链接,用于测试目的,不会像直接安装目录那样修改您的 package.json 文件。完成后,请始终确保运行 unlink

     npm unlink <your lib name>
    

    和你的 ./dist/

     npm unlink
    
     
    

    【讨论】:

    • 你应该添加你试图避免混淆的内容......
    • @theTypan 我认为您可能缺少一些步骤。查看上面的更新,因为我已经一步一步地提供了我过去是如何做到这一点的
    • @EdwardRomero 再次感谢..我已经尝试了你的步骤,但没有成功
    • @theTypan 这很奇怪。你能用你的应用程序目录结构更新上面的问题吗?这是我在创建库时唯一能想到的另一件事,这会导致上述步骤无法正常工作。我们的想法是让我们能够看到您的应用程序以及您创建的库的位置,以确保您的存储库设置正确
    • @EdwardRomero 我发布了我自己的答案,非常感谢...非常感谢
    【解决方案2】:

    因此,经过数小时试图弄清楚如何解决这个问题,我发现了这些资源,这些资源帮助我解决了这个问题:

    https://firebase.google.com/docs/functions/handle-dependencies#including_local_nodejs_modules_as_part_of_your_deployment_package

    注意:部署函数时,Firebase CLI 会忽略本地 node_modules 文件夹。

    Firebase Functions local "file:" dependencies

    因此,即使应用在本地运行,node_modules 也不会部署

    由于我之前从 git 安装了 python 包,我想为什么不使用它呢?我正在使用 Gitlab,这个答案真的帮助了我https://stackoverflow.com/a/50314604/3247914

    我通过从 git 安装我的包来让它工作

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 2020-01-04
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 2021-08-13
      相关资源
      最近更新 更多