前言:当我从NPM注册表中将其作为包安装时,我派生的存储库可以通过NPM安装得很好。我目前的猜测是,从注册表安装包时设置目录的方式与直接从package.json文件中的babel-register模块安装目录的方式不同,这导致在GitHub脚本执行期间尝试查找babel-register模块的require()语句失败。如果有人能给我一个文档,清楚地解释NPM在从NPM注册表安装软件包时所采取的步骤,它可能会帮助我弄清楚这一点。
我有一个我派生的GitHub存储库:
https://github.com/roschler/zos-cli我正在尝试使用我认为用于引用GitHub存储库和分支的适当格式,将该包作为依赖项安装在我的Node.JS包中,如我的package.json文件中所示:
{
"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时,我得到了以下错误输出:
$ 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子目录中:
$ find . -regex .*?babel-register
./node_modules/babel-register然后我尝试全局安装Babel命令行版本,如果您查看我的package.json文件,我尝试按照他们的文档将Node API版本安装到我的项目中:
https://babeljs.io/blog/2015/10/31/setting-up-babel-6
$ npm install --global babel-cli
$ npm install --save-dev babel-core我仍然得到完全相同的错误输出。为什么它仍然抱怨找不到babel-register,我该如何解决这个问题?
更新:我尝试了如下所示的完全全局安装,但仍然出现完全相同的错误:
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注册上找到此页面:
https://new.babeljs.io/docs/en/next/babel-register.html已尝试建议的npm安装:
npm install @babel/core @babel/register --save-dev还是不走运。
发布于 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 i; npm run prepack;,然后从中删除了prepackhttps://stackoverflow.com/questions/50789255
复制相似问题