我已经在这堵砖墙上猛击了一天,所以我该向SO寻求帮助了!我正在尝试从babel v5更新项目,我从package.json开始:

"devDependencies": {
    "babel": "^5.8.21",

"test": "mocha --require babel/register",

我曾尝试将v6和v7升级到babel,但一次都没有成功。在这两种情况下,当我尝试运行适用于v5的测试时,都以TypeError: _application.ApplicationClient is not a constructor结尾:
import { ApplicationClient } from '../src/wiotp/sdk/application';
...
let client = new ApplicationClient();

以v6为例,我在package.json中得到以下内容:
  "devDependencies": {
    "babel-cli": "^6.0.0",
    "babel-core": "^6.0.0",
    "babel-preset-env": "^1.7.0",
    "mocha": "6.1.4",

"test": "mocha --require babel-core/register --timeout 5000",

并创建了一个.babelrc文件(以前不存在):
{
    "presets": ["env"]
}

我已经阅读了十几篇或更多的文章,试图了解这里的情况,并且已经完成了许多基于Google搜索类似问题的建议“修复”,但是我从零开始,发现它很难实现得到一个简单的普通英语解释,说明一开始的实际问题是什么,以及在这里应该如何配置babel来解决它。我猜v5中默认发生的某些事情现在需要在.babelrc中进行某种配置,但是/ shrugs /现在不知道从哪里开始。
  • babel5 to babel6 branch compare
  • babel5 to babel7 branch compare

  • 有什么指针可以帮助那些挣扎着将头围起来的人,更不用说v5、6和7之间的区别了吗?

    编辑:

    src / wiotp / sdk / application / index.js具有以下功能:
    import { default as ApplicationClient } from './ApplicationClient';
    
    export default {
      ApplicationClient
    }
    

    其中src / wiotp / sdk / application / ApplicationClient.js导出了一个类(我只是想在测试代码中创建该类的实例):
    export default class ApplicationClient extends BaseClient {
      constructor(config) {
    

    最佳答案



    这太可怕了,并引起您的问题。该模块会默认导出对象文字,而不只是使用命名的导出。这可能是一个错误,他们打算写

    import { default as ApplicationClient } from './ApplicationClient';
    export { ApplicationClient }
    

    要么
    export { default as ApplicationClient } from './ApplicationClient';
    

    建议您报告问题并提供补丁。

    如果这不是错误,而是故意的,则需要将代码更改为
    import application from '../src/wiotp/sdk/application';
    …
    let client = new application.ApplicationClient();
    //               ^^^^^^^^^^^^
    

    或直接将其从原始模块中导入:
    import ApplicationClient from '../src/wiotp/sdk/application/ApplicationClient.js';
    //                                                          ^^^^^^^^^^^^^^^^^^^^^
    …
    let client = new ApplicationClient();
    

    10-07 18:27