Javascript 属性未定义
我从控制台返回了此错误:Javascript 属性未定义,javascript,npm,Javascript,Npm,我从控制台返回了此错误: index.js:70 Uncaught TypeError: Cannot read property 'searchForm' of undefined at eval (index.js:70) at Module../src/js/index.js (bundle.js:4245) at __webpack_require__ (bundle.js:20) at eval (webpack:///multi_(:8080/webp
index.js:70 Uncaught TypeError: Cannot read property 'searchForm' of undefined
at eval (index.js:70)
at Module../src/js/index.js (bundle.js:4245)
at __webpack_require__ (bundle.js:20)
at eval (webpack:///multi_(:8080/webpack)-dev-server/client?:3:18)
at Object.0 (bundle.js:4292)
at __webpack_require__ (bundle.js:20)
at bundle.js:84
at bundle.js:87
(anonymous) @ index.js:70
./src/js/index.js @ bundle.js:4245
__webpack_require__ @ bundle.js:20
(anonymous) @ client:3
0 @ bundle.js:4292
__webpack_require__ @ bundle.js:20
(anonymous) @ bundle.js:84
(anonymous) @ bundle.js:87
mixpanel-2-latest.min.js:88 document not ready yet, trying again in 500 milliseconds...
client:52 [WDS] Live Reloading enabled.
client:126 [WDS] Warnings while compiling.
warnings @ client:126
(anonymous) @ socket.js:47
sock.onmessage @ SockJSClient.js:58
EventTarget.dispatchEvent @ sockjs.js:170
(anonymous) @ sockjs.js:887
SockJS._transportMessage @ sockjs.js:885
EventEmitter.emit @ sockjs.js:86
WebSocketTransport.ws.onmessage @ sockjs.js:2961
client:135 ./src/js/views/searchView.js 6:9-17
"export 'elements' was not found in './base'
warnings @ client:135
(anonymous) @ socket.js:47
sock.onmessage @ SockJSClient.js:58
EventTarget.dispatchEvent @ sockjs.js:170
(anonymous) @ sockjs.js:887
SockJS._transportMessage @ sockjs.js:885
EventEmitter.emit @ sockjs.js:86
WebSocketTransport.ws.onmessage @ sockjs.js:2961
client:135 ./src/js/index.js 66:0-8
"export 'elements' was not found in './views/base'
我通过Babel追踪ES6->ES5转换中的错误:
_views_base__WEBPACK_IMPORTED_MODULE_2__["elements"].searchForm.addEventListener('submit', function (e) {
Index.js:
// always make sure you have the right directory
// import field
import Search from './models/Search';
// import all the function from the view
import * as searchView from './views/searchView'
import {elements} from './views/base';
/* Global state of the app
- Search obj
- current recipe obj
- shopping list object
- liked recipes
*/
// everytime we reload the app, it will be empty
const state = {}
const controlSearch = async () =>{
// 1) Get the query from the view
const query = searchView.getInput;
console.log(query);
if(query){
// 2) new search object and add it to state
state.search = new Search(query); // new instance of the search class
// 3) prepare UI for results
// 4) Search for recipes
await state.search.getResults();
// 5) render result in the UI, reminder u got hit the search button
console.log(state.search.result);
}
}
elements.searchForm.addEventListener('submit', e =>{
e.preventDefault();
controlSearch();
})
const search = new Search('pizza');
console.log(search);
search.getResults();
searchView.js:
// if we are in the current folder then it is simply base
import {elements} from './base';
// return the input value from the field
// implicit search
export const getInput =() => elements.searchInput.value;
base.js:
// all the DOM element will be in this class
export const element = {
searchForm: document.querySelector('.search'),
searchInput: document.querySelector('.search__field')
}
跟踪错误,我认为一切都在定义中,我似乎不知道这个错误是如何发生的。我是网络开发新手,我希望这不是一个坏问题。我真的需要一个更有经验的头脑来看待这个错误。非常感谢 在base.js中……您正在导出元素
export const element
在index.js中,您正在导入元素
import {elements} from './views/base';
将“元素”改为“元素”,或将cersa改为“元素”我不使用NPM,所以我可能不使用它。但是导出常量元素应该是导出常量元素吗?你完全正确。这是一个很好的收获,谢谢你。祝你度过愉快的一天,继续编码。这是绝对正确的,并修复了错误。有时,错误消息确实具有误导性。祝你度过美好的一天,继续编码!非常感谢。