我在我的rails项目中使用rails-browserify来编译reactJS应用程序。
我的节点package.json文件如下所示:
{
"dependencies": {
"babel-core": "^6.13.2",
"babel-loader": "^6.2.4",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-preset-es2015": "^6.13.2",
"babel-preset-react": "^6.11.1",
"babel-preset-stage-1": "^6.13.0",
"babel-preset-stage-2": "^6.13.0",
"babelify": "^7.3.0",
"browserify": "^13.1.0",
"browserify-incremental": "^3.1.1",
"mobx": "^2.4.2",
"mobx-react": "^3.5.4",
"react": "^15.3.0",
"react-dom": "^15.3.0",
"react-router": "^2.6.1",
"webpack": "^1.13.1"
}
}
然而,每当我import { observer } from 'mobx-react'
时,
我得到了
未捕获的TypeError:超级表达式必须为null或函数,而不是未定义的
我导入的任何其他库都不会发生这种情况。 react
,mobx
,react-dom
全部导入正常。如果您需要任何其他细节,请告诉我。任何帮助表示赞赏。我真的很难过。
有问题的模块看起来像这样。我还没有在组件中使用mobx-react,只导入它。这是触发错误的import {observer}行。
import React, { Component } from 'react';
import { observer } from "mobx-react";
export default class OnboardingHeader extends Component {
constructor(props) {
super(props);
this.state = {...}
}
}
答案 0 :(得分:2)
好的,我没有解决这个问题,但我现在想出了一个解决方法。
我将观察者导入移动为两步法,而且babelify似乎更喜欢这样。我改变了
import { observer } from 'mobx-react';
到
import mobxReact from 'mobx-react';
const { observer } = mobxReact;
现在一切似乎都很好。问题似乎在于babelify以及它如何将导入转换为库。