1

为什么这不起作用?
npx -p @babel/core -p @babel/cli -p @babel/preset-env babel --presets=@babel/preset-env src -d deploy

这确实有效,但我认为 NPX 不需要预安装:
npm i @babel/core @babel/cli @babel/preset-env && npx babel --presets=@babel/preset-env src -d deploy

根据大多数描述,它似乎应该从 NPM 注册表中检索在本地找不到的任何内容,然后在运行之前安装它,或者甚至无需安装即可运行它。

对于我当前的项目,它包含在 Heroku 应用程序构建脚本中,报告的错误如下:

远程:npx:在 16.391 秒
远程安装 302:{ 错误:无法从“/tmp/build_d9c5cb59d8e4131a23bd0ce2437051f9”
远程找到模块“@babel/preset-env”:在 Function.module.exports [as sync] (/tmp/npmcache. qz5Sl/_npx/595/lib/node_modules/@babel/core/node_modules/resolve/lib/sync.js:74:15)
远程:在resolveStandardizedName (/tmp/npmcache.qz5Sl/_npx/595/lib/node_modules/@ babel/core/lib/config/files/plugins.js:101:31)
远程:在 resolvePreset (/tmp/npmcache.qz5Sl/_npx/595/lib/node_modules/@babel/core/lib/config/files/plugins .js:58:10)
远程:在 loadPreset (/tmp/npmcache.qz5Sl/_npx/595/lib/node_modules/@babel/core/lib/config/files/plugins.js:77:20)
远程:在 createDescriptor (/tmp/npmcache.qz5Sl/_npx/595/lib/node_modules/@babel/core/lib/config/config-descriptors.js:154:9)
远程:在 items.map (/tmp/npmcache .qz5Sl/_npx/595/lib/node_modules/@babel/core/lib/config/config-descriptors.js:109:50)
远程:在Array.map()
远程:在createDescriptors(/tmp/npmcache.qz5Sl/ _npx/595/lib/node_modules/@babel/core/lib/config/config-descriptors.js:109:29)
远程:在createPresetDescriptors (/tmp/npmcache.qz5Sl/_npx/595/lib/node_modules/@babel/ core/lib/config/config-descriptors.js:101:10)
远程:在 passPerPreset (/tmp/npmcache.qz5Sl/_npx/595/lib/node_modules/@babel/core/lib/config/config-descriptors.js :58:96) 代码:'MODULE_NOT_FOUND'}
远程:npm ERR!代码生命周期
远程:npm 错误!错误号 1


我认为这个答案试图解释这个问题,但我真的不明白,而且似乎还有更多的事情发生,因为我什至无法让它与我的任何未由 NPM 预安装的软件包一起工作。

4

1 回答 1

1

BabelJS 的工作人员 Jordan Harband 和 Huáng Jùnliàng 帮助我理解了为什么我想做的事情在这个时候是不可能的,有两个原因:

1) Babel 失去了它的作用域

2) Babel 搜索 npx 的当前工作目录而不是它自己的

于 2019-09-13T02:04:27.097 回答