找不到 Babel 命令

Posted

技术标签:

【中文标题】找不到 Babel 命令【英文标题】:Babel command not found 【发布时间】:2016-03-29 01:15:24 【问题描述】:

我已经按照 Babel 'getting started' 页面的说明安装了 babel-cli 工具。

从我的项目文件夹中的终端:

npm install --save-dev babel-cli

在这之后,有一个带有 babel-cli 文件夹的 node_modules 目录,但是没有创建 package.json。 npm 还显示以下错误:

npm WARN enoent ENOENT: no such file or directory, open '/Users/MyName/Sites/Tutorials/Babel2/package.json

当尝试运行 babel 时,我得到了这个:

babel src -d lib
-bash: babel: command not found

我安装了最新版本的 nodejs/npm。我运行了 npm update -g,并编辑了我的 .bash_profile 文件以包含:

export PATH=$PATH:/Users/MyName/npm/bin
export PATH=/usr/local/share/npm/bin:$PATH

我没有使用其他 npm 工具(例如 browserify)体验过这种情况。为什么 babel 不识别?

【问题讨论】:

你可以在这里看到如何开始使用 babel-cli:***.com/questions/34483748/… 如果你用的是fish,试试github.com/oh-my-fish/plugin-node-binpath 就我而言,我必须重新安装我的 node_modules:rm -rf ./node_modules && npm i 【参考方案1】:

这是一个常见问题,它会从您安装babel-cli 的根目录中寻找.cmd 文件。试试下面的命令。

./node_modules/.bin/babel.cmd

一旦您能够在命令提示符中看到您的源代码。下一步是再安装一个 npm 模块 babel-preset-es2015

按照下面的答案安装babel-preset-es2015,看看为什么 babel 需要这个。

babel-file-is-copied-without-being-transformed

【讨论】:

【参考方案2】:

这里有两个问题。首先,您需要一个package.json 文件。告诉 npm 在没有安装的情况下安装会抛出 npm WARN enoent ENOENT: no such file or directory 错误。在您的项目目录中,运行npm init 为该项目生成一个package.json 文件。

其次,可能找不到本地二进制文件,因为本地./node_modules/.bin 不在$PATH 中。 How to use package installed locally in node_modules? 中有一些解决方案,但将 babel-cli 命令包装在 npm 脚本中可能更容易。这是因为npm runnpm bin (node_modules/.bin) 的输出添加到提供给脚本的PATH

这是一个精简的示例 package.json,它返回本地安装的 babel-cli 版本:


  "scripts": 
    "babel-version": "babel --version"
  ,
  "devDependencies": 
    "babel-cli": "^6.6.5"
  

使用以下命令调用脚本:npm run babel-version

将脚本放入 package.json 非常有用,但经常被忽视。文档中的更多内容:How npm handles the "scripts" field

【讨论】:

在考虑了其他答案,并探索弄乱了我的~/.profile 文件以确保我可以调用本地node_modules 中的包之后,我总结了package.jsonscripts 区域是最好的选择。您无需告诉您的同事更改他们的个人资料或设置别名,您的脚本就可以正常工作。 我正在使用 Yarn(工作要求),我看到的针对此问题的大多数修复程序都使用 npx。 “./node_modules/.bin 不在 $PATH 中”为我修复了它。谢谢!【参考方案3】:

这就是我自动将我的本地项目node_modules/.bin 路径添加到PATH 的操作。在~/.profile 我补充说:

if [ -d "$PWD/node_modules/.bin" ]; then 
    PATH="$PWD/node_modules/.bin"
fi

然后重新加载您的 bash 配置文件:source ~/.profile

【讨论】:

【参考方案4】:

您需要在 babel 文件的路径周围添加引号,如下所示

"./node_modules/.bin/babel" --help

【讨论】:

【参考方案5】:

我有同样的问题。删除nodemodules 文件夹并以管理员身份打开命令提示符,然后运行npm install

所有包都安装好了。

【讨论】:

【参考方案6】:

当我发现这个问题时,我正在寻找

$ npm install -g babel-cli

【讨论】:

您永远不必在 npm 中使用 sudo。尝试使用 nvm 来管理您的节点版本。 npm install -g babel-cli 无需 sudo 即可工作。 你应该使用sudonpm install -g babel-cli来访问这个文件/usr/local/lib/node_modules,否则你会被拒绝。 @babel/cli 文档建议不要全局安装 babel-cli(以避免与使用不同版本 babel 的其他项目发生冲突,并提高可移植性)【参考方案7】:

其实,如果你想使用 cmd 命令,你有两种方法。 首先,将其安装在 gloabl 环境中。 另一种方式是npm link。 所以,尝试第一种方式:npm install -g babel-cli

【讨论】:

【参考方案8】:

我遇到了同样的问题,尝试了我能想到的一切。不喜欢在全球范围内安装任何东西,但最终不得不运行 npm install -g babel-cli, 这解决了我的问题。 也许不是答案,但绝对是一个可能的解决方案……

【讨论】:

【参考方案9】:

为我工作,例如

./node_modules/.bin/babel --version
./node_modules/.bin/babel src/main.js

【讨论】:

【参考方案10】:

要安装 7+ 版本的 Babel 运行:

npm install -g @babel/cli
npm install -g @babel/core

【讨论】:

这对我有帮助!【参考方案11】:

对于那些使用 Yarn 作为包管理器而不是 npm 的人:

yarn global add babel-cli

【讨论】:

【参考方案12】:

一种选择是全局安装 cli。

由于Babel 7 was released,命名空间已从babel-cli 更改为@babel/cli,因此:

npm install --global @babel/cli

您可能仍会遇到@babel/core 的错误,因此:

npm install --global @babel/core

【讨论】:

【参考方案13】:

全局安装babel可以解决这个问题:

npm install -g @babel/core @babel/cli

但是,不鼓励在全局范围内安装依赖项,因为它们不会在每个项目的基础上管理其版本。

您应该按照babel 的documentation 的建议在本地安装依赖项:

npm install --save-dev @babel/core @babel/cli

不利的一面是,这使您无法快速/方便地以交互方式调用本地二进制文件(在本例中为 babel)。 npx 给你一个很好的解决方案:

npx babel --version

这将运行babel 的本地安装。另外,如果你想避免输入npx,你可以配置shell auto fallback,然后运行:

babel --version

注意:在项目的根目录下创建一个文件.babelrc 非常重要,您可以在其中指定您的 babel 配置。作为起点,您可以使用env-preset 转译为 ES2015+:

npm install @babel/preset-env --save-dev

为了启用预设,您必须在 .babelrc 文件中定义它,如下所示:


  "presets": ["@babel/preset-env"]

【讨论】:

根据documentation 的建议,您需要安装@babel/core 和@babel/cli,无论它们的版本如何。【参考方案14】:

这在 package.json 中作为 npm 脚本对我有用,但即使我将它们作为开发依赖项,抓取这些包似乎也需要很长时间。好像也太长了。

"babel": "npx -p @babel/cli -p @babel/core babel --version"

最终解决它的方法要简单得多,但也很有趣

npm install

我以为我已经运行过了,但我想有些东西需要重建。然后就:

"babel": "babel --version"

【讨论】:

以上是关于找不到 Babel 命令的主要内容,如果未能解决你的问题,请参考以下文章

找不到模块 'babel-core' 但已安装 @babel/core

Vue-jest 找不到 babel

VueJS - 找不到模块:错误:无法解析'@babel/runtime/regenerator'

Babel:尝试使用中继预设时出错'找不到相对于目录的预设“中继”'

错误:index.js:找不到模块'babel-plugin-r' React Native

错误:找不到模块“babel-register”