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 - 向 PHP 提交 Javascript 对象

javascript - 使用 const 来要求模块

node.js - 无法安装node-gyp

javascript - 无法使用 key 对验证 Node.js Crypto 的签名

python - 安装line-in包时出错: NodeJS

npm - 如何通过 Babel/Webpack 保持 Flow 注释完整?

javascript - NodeJS 请求 POST Iconv

javascript - 如何将 Node.js 文件拆分为多个文件

JavaScript onchange 函数不起作用

javascript - 在 underscore.js 中展平嵌套数组/对象