未找到Babel命令

Kok*_*oko 63 npm babeljs

我按照Babel '入门'页面的说明安装了babel-cli工具.

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

npm install --save-dev babel-cli
Run Code Online (Sandbox Code Playgroud)

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

npm WARN enoent ENOENT: no such file or directory, open '/Users/MyName/Sites/Tutorials/Babel2/package.json
Run Code Online (Sandbox Code Playgroud)

当试图运行babel时,我明白了:

babel src -d lib
-bash: babel: command not found
Run Code Online (Sandbox Code Playgroud)

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

export PATH=$PATH:/Users/MyName/npm/bin
export PATH=/usr/local/share/npm/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

我没有使用浏览器等其他npm工具.为什么巴贝尔不被认可?

joe*_*ler 83

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

其次,可能找不到本地二进制文件,因为本地文件./node_modules/.bin不在$PATH.在如何使用node_modules中本地安装的软件包中有一些解决方案,但是在npm脚本中包装babel-cli命令可能更容易.这是有效的,因为npm runnpm bin(node_modules/.bin)的输出添加到PATH提供给脚本.

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

{
  "scripts": {
    "babel-version": "babel --version"
  },
  "devDependencies": {
    "babel-cli": "^6.6.5"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

将脚本放在package.json中是非常有用的,但经常被忽略.在文档中还有更多:npm如何处理"脚本"字段

  • 在考虑了其他答案,并探索弄乱我的`〜/ .profile`文件以确保我可以调用本地`node_modules`中的包之后,我得出结论`package.json`的`scripts`区域是最好的选项.您无需告诉您的同事更改其个人资料或制作别名,您的脚本也可以正常工作. (2认同)

Mar*_*oma 26

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

$ npm install -g babel-cli
Run Code Online (Sandbox Code Playgroud)

  • 您永远不必将 sudo 与 npm 一起使用。尝试使用 nvm 来管理您的节点版本。 (2认同)
  • 你应该使用 sudo 和 npm install -g babel-cli 来访问这个文件 /usr/local/lib/node_modules ,否则你会被拒绝。 (2认同)

Ala*_*kat 11

这是常见问题,它.cmd从您安装的根目录中查找文件babel-cli.尝试以下命令.

./node_modules/.bin/babel.cmd

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

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

巴别-文件被复制的,而无需感转化

  • 该命令应该是`./ node_modules/.bin/babel`. (9认同)

sea*_*078 8

要安装 Babel 7+ 版本,请运行:

npm install -g @babel/cli
npm install -g @babel/core
Run Code Online (Sandbox Code Playgroud)


Yeg*_*ega 6

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

if [ -d "$PWD/node_modules/.bin" ]; then 
    PATH="$PWD/node_modules/.bin"
fi
Run Code Online (Sandbox Code Playgroud)

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


lmi*_*asf 6

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

npm install -g @babel/core @babel/cli
Run Code Online (Sandbox Code Playgroud)

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

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

npm install --save-dev @babel/core @babel/cli
Run Code Online (Sandbox Code Playgroud)

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

npx babel --version
Run Code Online (Sandbox Code Playgroud)

这将运行本地安装的babel. 此外,如果你想避免输入npx,你可以配置shell 自动回退,然后运行:

babel --version
Run Code Online (Sandbox Code Playgroud)

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

npm install @babel/preset-env --save-dev
Run Code Online (Sandbox Code Playgroud)

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

{
  "presets": ["@babel/preset-env"]
}
Run Code Online (Sandbox Code Playgroud)