Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 使用babel/register冲突大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在两个本地npm包之间出现了babel / register中的冲突.

一个包中,我正在做以下事情:@H_874_7@

require('babel/register');
require('index');

并在同一个包的索引文件中:@H_874_7@

require('test');

并在“测试”包中:@H_874_7@

require('babel/register');
require('test/index');

这会引发以下错误:@H_874_7@

抛出新错误(“只允许一个babel / polyfill实例”);@H_874_7@

但是如果我从“test”包中取出babel / register行,我会在“test”包的索引文件中收到以下错误:@H_874_7@

import fs from 'fs';
^^^^^^
SyntaxError: Unexpected reserved word

我已经尝试使用System.import导入“test”包(使用BabelJS站点上指定的polyfill),但在这种情况下,我得到与上面相同的错误.我应该如何将一个包导入另一个包并保留使用ES6导入/导出和其他ES6功能的能力?@H_874_7@

编辑:我已经简化了一点,我仍然需要“测试”到第一个包,但我没有加载中间文件.相反,“test”的“main”文件设置为test / index.从理论上讲,现在它只是加载一个ES6模块,它应该能够注册.我仍然得到上述错误.@H_874_7@

解决方法

正如您所看到的,babel / register仅适用于每个应用程序运行一次,通常这将是您正在启动的顶级应用程序.

你面临的问题是认情况下,require(‘babel / register’)只会将你的系统设置为直接在模块内部转换文件,它不会处理node_modules.通常期望node_modules中的任何内容在发布到模块注册表时都会提前编译.@H_874_7@

一种选择是将ignore:false作为选项传递,例如require(‘babel / register’)({ignore:falsE});但这通常是一个坏主意,可能会导致其他问题.这将使Babel转换所有文件,但这并不总是一件安全的事情,因为并非所有JavaScript代码都保证是有效的ES6模块.@H_874_7@

最好的解决方案是提前转换测试模块.但是,如果这不起作用,则可以使用唯一选项为应该转换的路径指定正则表达式或glob.@H_874_7@

大佬总结

以上是大佬教程为你收集整理的node.js – 使用babel/register冲突全部内容,希望文章能够帮你解决node.js – 使用babel/register冲突所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。