问题描述
我目前正在研究大学的最后一个项目的反应,遇到一些我不知道它是否正常的问题。
错误是:
Uncaught SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at Module../src/redux/reducers/loginReducer.js (loginReducer.js:3)
at __webpack_require__ (bootstrap:784)
at fn (bootstrap:150)
at Module../src/redux/reducers/rootReducer.js (rootReducer.js:1)
at __webpack_require__ (bootstrap:784)
at fn (bootstrap:150)
at Module../src/index.js (config.js:1)
at __webpack_require__ (bootstrap:784)
at fn (bootstrap:150)
at Object.1 (types.js:1)
at __webpack_require__ (bootstrap:784)
at checkDeferredModules (bootstrap:45)
at Array.webpackJsonpCallback [as push] (bootstrap:32)
at main.chunk.js:1
显然,我每次启动react应用程序时都必须清除缓存。 正常吗?恐怕到我将此网站上线时,它将仍然无法被用户访问。否则只会在本地主机上这样?而webpack与这有什么关系?
(loginReducer.js)
import { userConstants } from '../types';
let user = JSON.parse(localStorage.getItem('user'));
const initialState = user ?
{ loggedIn: true,user } : {};
export function authentication(state = initialState,action) {
switch (action.type) {
case userConstants.LOGIN_REQUEST:
return {
loggingIn: true,//state yang dikirim ke global,bisa diganti jg di reducer kalo dibutuhin di component lain
};
case userConstants.LOGIN_SUCCESS:
return {
loggedIn:true,user: action.user
};
case userConstants.LOGIN_FAILURE:
return {};
case userConstants.logoUT:
return {};
default:
return state
}
}
(rootReducer.js)
import {combineReducers} from 'redux';
//reducers
import {authentication} from './loginReducer';
import {register} from './registerReducer';
export const rootReducer = combineReducers({
authentication,register
});
(index.js)
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import {createStore,applyMiddleware} from 'redux';
import {Provider} from 'react-redux';
import {rootReducer} from './redux/reducers/rootReducer';
import thunkMiddleware from 'redux-thunk';
import { createLogger } from 'redux-logger';
const loggerMiddleware = createLogger();
//store
const store = createStore(rootReducer,applyMiddleware(
thunkMiddleware,loggerMiddleware
));
ReactDOM.render(<Provider store={store}><App /></Provider>,document.getElementById('app'));
解决方法
这里https://github.com/facebook/create-react-app/issues/7261是解决您问题的多种解决方案,其中一种可能也对您有用,其他地方的人也建议这样做:删除C:\ Users \ username \ AppData \ Roaming中的所有内容\ npm-cache 解决了问题
编辑:
看来您打算对无效的JSON格式进行from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Customer(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE,null=True,blank=True)
name = models.CharField(max_length=200,null=True)
email = models.CharField(max_length=200,null=True)
def __str__(self):
return self.name
,您能检查一下JSON.parse
里面是什么吗?
它可能是空字符串,导致localStorage.getItem('user')
导致代码崩溃。