javascript - 使用特定版本的 npm shrinkwrap

标签 javascript node.js npm appfog shrinkwrap

我正在将我的 node.js 应用程序部署到 Appfog,但由于他们的安装脚本无法解析 npm-shrinkwrap.json,因此整个部署过程失败。

今天 shrinkwrap.json 中的示例依赖项如下所示

   "async": {
      "version": "0.2.10",
      "from": "async@0.2.10", <--- This line breaks install script at appfog
      "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
    },

我检查了整个 shrinkwrap 文件并从每个依赖项声明中删除了“来自”部分,我设法上传了我的应用程序,并且它有效。

所以我的问题是,如何使用旧版本的 npm shrinkwrap 才能获得我需要的 shrinkwrap.json 版本?

Appfog 支持人员告诉我需要使用 1.1.21 版本,但我没有成功安装它。

请询问是否缺少某些信息。

最佳答案

如果你只想使用旧版本的 npm,你可以通过 npm 安装它(我知道这听起来很奇怪,但它是可能的)

npm install npm@1.1.21

编辑:所以你尝试安装一个不存在的 npm 版本。就跑

npm view npm

并查看属性 version,看看您可以通过 npm 安装哪些版本。

您会看到注册表中不存在 1.1.21,这意味着您应该尝试通过 github 安装它(请参阅@sakai 的回答)。

但是你会看到下一个问题。您正在使用 node@0.10.26,npm 1.1.21 可能与 node@0.10.x 不兼容。

所以我自己基本上看到了 2 种可能的解决方案:

解决方案一:

使用n (或者可能是 nvm 用于来回切换 Node 版本。您可以尝试安装 node@0.8.x 版本并尝试在那里安装 npm@1.1.21,完成收缩包装后切换回当前 Node 版本.

方案二

您可以设置某种 grunt/gulp-task(我希望您使用其中之一)来运行 grunt/gulp shrinkwrap,它会生成您的 shrinkwrap.json(通过 npm shrinkwrap)并在完成后清理您的 shrinkwrap.json

关于javascript - 使用特定版本的 npm shrinkwrap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23310092/

相关文章:

javascript - socket.io 服务器对象选项,两者之间有什么影响?

jquery - Bootstrap 4 将数据传递到远程模式

javascript - 当我执行包裹时,我的 reactjs 网站拒绝进入无服务器

javascript - Mongoose 递归查找数据库中的元素

javascript - jQuery - 动态更改具有相同 id 标签类名的元素

javascript - casperjs:如何单击远程 div,然后更新其类名?

ubuntu - 当我尝试运行 npm run build 命令时出现一堆错误

javascript - 从另一个对象中访问对象属性 (JavaScript/jQuery)

javascript - 在sequelize中查询两个表

node.js - 无法创建 react 新项目