首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从NPM注册表而不是从GitHub URL安装包可以作为依赖项安装吗?

从NPM注册表而不是从GitHub URL安装包可以作为依赖项安装吗?
EN

Stack Overflow用户
提问于 2018-06-11 08:39:18
回答 1查看 402关注 0票数 0

前言:当我从NPM注册表中将其作为包安装时,我派生的存储库可以通过NPM安装得很好。我目前的猜测是,从注册表安装包时设置目录的方式与直接从package.json文件中的babel-register模块安装目录的方式不同,这导致在GitHub脚本执行期间尝试查找babel-register模块的require()语句失败。如果有人能给我一个文档,清楚地解释NPM在从NPM注册表安装软件包时所采取的步骤,它可能会帮助我弄清楚这一点。

我有一个我派生的GitHub存储库:

代码语言:javascript
复制
 https://github.com/roschler/zos-cli

我正在尝试使用我认为用于引用GitHub存储库和分支的适当格式,将该包作为依赖项安装在我的Node.JS包中,如我的package.json文件中所示:

代码语言:javascript
复制
{
    "name": "basil",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1",
      "build": "webpack --mode production"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "dependencies": {
      "openzeppelin-zos": "^1.9.1"
    },
    "devDependencies": {
      "ajv": "^6.5.1",
      "babel-core": "^6.26.3",
      "babel-loader": "^7.1.4",
      "babel-preset-env": "^1.7.0",
      "babel-preset-react": "^6.24.1",
      "babel-register": "^6.26.0",
      "webpack": "^4.12.0",
      "webpack-cli": "^3.0.3",
      "zos": "roschler/zos-cli.git#development"
    }
}

但是,当我在进行更改后执行npm install时,我得到了以下错误输出:

代码语言:javascript
复制
$  npm install

> zos@1.0.0 prepack /home/robert/.npm/_cacache/tmp/git-clone-d4bae66a
> truffle compile && rm -rf lib && babel src --out-dir lib

Error: Cannot find module 'babel-register'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
    at Function.Module._load (internal/modules/cjs/loader.js:520:25)
    at Module.require (internal/modules/cjs/loader.js:650:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (/home/robert/.npm/_cacache/tmp/git-clone-d4bae66a/truffle.js:1:63)
    at Module._compile (internal/modules/cjs/loader.js:702:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
    at Module.load (internal/modules/cjs/loader.js:612:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
    at Function.Module._load (internal/modules/cjs/loader.js:543:3)

我仔细检查了一下,必要的babel元素在我的项目的node_modules子目录中:

代码语言:javascript
复制
$ find . -regex .*?babel-register
./node_modules/babel-register

然后我尝试全局安装Babel命令行版本,如果您查看我的package.json文件,我尝试按照他们的文档将Node API版本安装到我的项目中:

代码语言:javascript
复制
https://babeljs.io/blog/2015/10/31/setting-up-babel-6

$ npm install --global babel-cli
$ npm install --save-dev babel-core

我仍然得到完全相同的错误输出。为什么它仍然抱怨找不到babel-register,我该如何解决这个问题?

更新:我尝试了如下所示的完全全局安装,但仍然出现完全相同的错误:

代码语言:javascript
复制
npm install -g ajv
npm install -g webpack
npm install -g webpack-cli
npm install -g babel-loader babel-core babel-preset-env babel-preset-react babel-register

# Created a .babelrc file in my project directory with this content:
{
  "presets": [
    ["env", {
      "targets": {
        "node": "8.9"
      }
    }],
    "react"
  ],
  "plugins": ["transform-object-rest-spread"]
}

更新2:在Babel注册上找到此页面:

代码语言:javascript
复制
https://new.babeljs.io/docs/en/next/babel-register.html

已尝试建议的npm安装:

代码语言:javascript
复制
npm install @babel/core @babel/register --save-dev

还是不走运。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-11 11:24:47

实际情况是,zos-cli有一个需要安装软件包的devDependencies的prepack脚本。prepack在安装git依赖项(https://docs.npmjs.com/misc/scripts)时运行,但是devDependencies只有在包是根包(https://docs.npmjs.com/files/package.json#devdependencies)时才会安装。因此,您实际上是在尝试在没有构建工具的情况下构建zos-cli。

简单地说,按原样安装此模块作为git依赖项将不起作用。

一些可能的解决方案:

github

  • (首选)实际发布模块并使用它(您可以在自己的NPM名称空间下派生和发布,在github上许可项目,并设置一个分支,在其中已经运行了npm i; npm run prepack;,然后从中删除了prepack
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50789255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档