找不到Babel命令


76

如Babel “入门”页面所述,我已经安装了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)体验到这一点。为什么通货膨胀不被认可?


1
你可以看到如何开始与巴贝尔-CLI这里:stackoverflow.com/questions/34483748/...
詹姆斯希巴德

如果您使用的是鱼,请尝试github.com/oh-my-fish/plugin-node-binpath
onmyway133 2013年

就我而言,我必须重新安装node_modules: rm -rf ./node_modules && npm i
理查德(Richard)

Answers:


88

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

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

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

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

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

将脚本放入package.json非常有用,但经常被忽略。文档中的更多内容:npm如何处理“脚本”字段


2
在考虑了其他答案后,探索弄乱我的~/.profile文件以确保可以在本地调用这些软件包node_modules,我得出结论,的scripts区域package.json是最好的选择。您无需告诉您的同事更改个人资料或创建别名,您的脚本就可以使用。
贾里德·伊根

36

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

$ npm install -g babel-cli

1
您永远不必将sudo与npm一起使用。尝试使用nvm来管理您的节点版本。
John Ottenlips

1
npm install -g babel-cli无需sudo即可工作。
John Ottenlips

2
您应该使用sudowithnpm install -g babel-cli访问该文件/ usr / local / lib / node_modules,否则将被拒绝。
代码

@ babel / cli文档建议不要在全球范围内安装babel-cli(以避免与使用不同版本的babel的其他项目发生冲突,并提高可移植性)
7hibault

11

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

./node_modules/.bin/babel.cmd

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

请按照以下答案进行安装,babel-preset-es2015并查看babel为什么需要这样做。

babel文件被复制而没有被转换


6

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

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

然后重新加载您的bash个人资料: source ~/.profile


6

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

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

那就是帮助我的原因!
JavaRunner

5

babel全局安装可解决此问题:

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

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

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

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

不利之处在于,这给您没有快速/便捷的方式来交互式地调用本地二进制文件(在这种情况下babel)。npx给您一个很好的解决方案:

npx babel --version

这将运行的本地安装babel。另外,如果要避免键入npx,可以配置shell自动回退,然后运行:

babel --version

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

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

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

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

3

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

所有软件包安装正常。


1

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

“ ./node_modules/.bin/babel”-帮助


1

实际上,如果要使用cmd命令,则有两种方法。首先,将其安装在全球环境中。另一种方法是npm link。因此,请尝试第一种方法:npm install -g babel-cli


1

为我工作

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

1

一种选择是全局安装cli。

Babel 7发布以来,名称空间已从更改babel-cli@babel/cli,因此:

npm install --global @babel/cli

您可能仍然会遇到以下错误@babel/core

npm install --global @babel/core

0

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


0

对于使用Yarn而不是npm的软件包管理器的用户:

yarn global add babel-cli

0

这在package.json中以npm脚本的形式为我工作,但是即使我将它们作为开发依赖项,也确实需要花费很长时间来抓取这些软件包。它似乎也太长了。

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

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

npm install

我以为我已经运行了,但是我猜想需要重新构建一些东西。然后:

"babel": "babel --version"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.