2016-08-11 37 views
1

我正在使用rails-browserify與我的rails項目編譯reactJS應用程序。從mobx-react導入observer會導致「Uncaught TypeError:超級表達式必須爲null或函數,而不是未定義」

我節點的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', 我得到一個

Uncaught TypeError: Super expression must either be null or a function, not undefined

這不會發生的,我導入任何其他庫。 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

你如何在React組件上使用觀察者?你如何導入React? – Tholle

+1

更新了原來的帖子。它們都是通過npm導入的,觀察者尚未實現,只能導入。即使我添加@observer裝飾器,問題仍然存在。 – codabrink

+0

所以,如果你只是從mobx-react中刪除import語句,它的工作原理是什麼?這很奇怪... – Tholle

回答

2

好的,我沒有解決這個問題,但我現在想出了一個解決方法。

我將觀察者導入移動到兩步法,並且babelify似乎更喜歡那樣。我改變

import { observer } from 'mobx-react'; 

import mobxReact from 'mobx-react'; 
const { observer } = mobxReact; 

一切似乎是現在的工作很好。這個問題似乎與babelify有關,它是如何將圖書館的輸入翻譯成圖書的。

+0

如果這仍然是一個問題,請隨時在github repo上打開一個問題:https://github.com/mobxjs/mobx-react – mweststrate

相關問題