我的节点webpack项目使用三个babel库.它们之间有什么区别?它们是如何被使用的?
"dependencies": {
"babel-runtime": "^5.8.24"
}
"dev-dependencies": {
"babel": "^5.8.23",
"babel-core": "^5.8.23"
}
Run Code Online (Sandbox Code Playgroud) String.prototype.replaceAll()是一种有用的方法,在构建和执行时一切正常。但是,所有 Jest 测试都失败并显示以下错误:
TypeError: replaceAll is not a function
Run Code Online (Sandbox Code Playgroud)
这些是我的依赖项:
"dependencies": {
"core-js": "^3.6.5",
"vue": "^2.6.11",
"vue-class-component": "^7.2.3",
"vue-i18n": "^8.22.0",
"vue-property-decorator": "^8.4.2",
"vue-router": "^3.3.4",
"vuex": "^3.5.1"
},
"devDependencies": {
"@vue/test-utils": "^1.1.0",
"jest-junit": "^12.0.0",
"ts-jest": "^26.4.1",
"typescript": "~3.9.3",
"vue-jest": "^3.0.7",
"vue-template-compiler": "^2.6.10"
},
Run Code Online (Sandbox Code Playgroud)
我该如何解决这种行为?
为了在 Babel 中进行运行时转换,您需要 require 并使用babel-core/register. 我不知道register在这个意义上是什么意思,即实际定义。
这实际上意味着什么?
我的问题不是为什么有些东西不起作用,而是为什么它起作用。是的。
\n\n我有一个小型的nodeJS命令行工具,其中包含nodeJS尚不支持开箱即用的功能,最值得注意的是:
\n\nimport声明String.includes()。因此,对于交付(构建),我转译+捆绑我的源代码(使用parcel,就像webpack一样)。
\n\n令人惊奇的是,我的所有(除了一个)摩卡测试都直接针对我的类而不是捆绑包运行。尽管如此,它们仍然有效!包括很多import说法。并包括“ES6 自测试”:
it( \'String - include\', () => {\n var s = \'Southern Bananas\'\n assert( s.includes( \'anana\' ) )\n assert( !s.includes( \'kiwi\' ) )\n} )\nRun Code Online (Sandbox Code Playgroud)\n\n我的测试代码中有 String.include ,而不仅仅是在被测试的源代码中。并且没有地方可以转译或捆绑我的测试代码\xe2\x80\xa6 因此,对我的愚蠢问题表示歉意:
\n\n我的mocha.opts比较简单:
--require @babel/register\n--require ./test/once.js (nothing special here, either)\n--reporter list\n--recursive\nRun Code Online (Sandbox Code Playgroud)\n\n我的.babelrc有这个:
{\n "presets": [\n …Run Code Online (Sandbox Code Playgroud) 采访中有人问我。我无法回答。
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
Run Code Online (Sandbox Code Playgroud)
我可以看到它是一个数组。“ not ie <= 11”表示将无法在低于Internet Explorer v11的操作系统上运行。“ op_mini”必须与Opera mini相关。
但我想知道为什么要这样做。
babeljs ×2
node.js ×2
definition ×1
ecmascript-6 ×1
javascript ×1
jestjs ×1
mocha.js ×1
package.json ×1
transpiler ×1