【发布时间】:2016-02-16 03:25:19
【问题描述】:
在开发我的Reactnpm 模块期间,我将它与npm link 符号链接。
完成此操作后,包会正确链接并出现在消费者应用程序node_modules中。
该模块公开了一个接口来创建一个React 组件。因为我使用React、jsx 和es2015,所以我在预发布阶段使用babel 转译我的模块代码,使用npm prepublish hook。
但是,当我尝试使用 webpack(即链接后)构建我的消费者应用程序时,我的包中出现错误,说明:
模块构建失败:错误:找不到预设“es2015”
现在有趣的是,如果我在 npm 上发布包,然后从我的消费者应用程序的注册表中npm install,构建它,一切正常。
我尝试在我的消费者应用中安装babel-preset-es2015,但随后它开始抱怨找不到babel:
找不到模块:错误:无法解析模块“babel”
同样,如果我从 npm 注册表安装它,一切正常,在构建过程中不会抛出任何错误。
我也试过安装babel-core、babel-cli和babel-polyfill,都无济于事。
我在任何地方都在使用babel v6.1.x,并且知道最近的所有变化,但是我想我遗漏了一些明显的东西,如果有人可以帮助我,我将不胜感激,因为不断发布模块以测试是否有用的东西只是不好的做法。
为了完整起见,这里是代码:
这些是我链接模块的步骤:
cd ~/Sites/me/react-leafboxnpm linkcd ~/Sites/me/mappnpm link react-leafboxnpm start
构建后的堆栈跟踪:
ERROR in ../react-leafbox/lib/index.js
Module build failed: Error: Couldn't find preset "es2015"
at OptionManager.mergePresets (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/options/option-manager.js:329:17)
at OptionManager.mergeOptions (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/options/option-manager.js:289:12)
at OptionManager.addConfig (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/options/option-manager.js:223:10)
at OptionManager.findConfigs (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/options/option-manager.js:366:16)
at OptionManager.init (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/options/option-manager.js:410:12)
at File.initOptions (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/index.js:191:75)
at new File (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/index.js:122:22)
at Pipeline.transform (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/pipeline.js:42:16)
at transpile (/Users/daniel/Sites/me/mapp/node_modules/babel-loader/index.js:14:22)
at Object.module.exports (/Users/daniel/Sites/me/mapp/node_modules/babel-loader/index.js:83:14)
@ ./src/js/components/App.jsx 2:10-34
添加额外的 babel 相关依赖项后的堆栈跟踪(我认为这不是必需的,因为它们在 react-leafbox 模块中可用):
ERROR in ../react-leafbox/lib/index.js
Module not found: Error: Cannot resolve module 'babel' in /Users/daniel/Sites/me/react-leafbox/lib
@ ../react-leafbox/lib/index.js 8:11-39
我在MAC OSX El Capitan v10.11.1 上使用node v5.0.0 和npm v3.3.6。我还尝试将node v4.2.1 与npm 2.14.7 一起使用,这给了我同样的错误。
【问题讨论】:
-
请阅读标签说明。
babel是针对具有上述名称的 Python 库 提出的问题。 -
@FelixKling 我错过了那个,谢谢纠正。
标签: node.js reactjs npm webpack babeljs