Tôi có một ứng dụng ion sử dụng cấu trúc dữ liệu đã đặt theo một trong các phương thức của nó. Khi tôi cố gắng chạy ứng dụng trên thiết bị Android của mình [Android 5.0.2, API 21], tôi gặp lỗi này
ReferenceError: Set is not defined
at Object.myMethod
Đây là đoạn mã mã hiển thị dòng chịu trách nhiệm về lỗi
myMethod: function[userid] {
var user = [];
var service = this;
var userIDs = new Set[];
var promises = [];
...}
Tôi không phải là một chuyên gia JavaScript nhưng dường như với tôi rằng đó có thể là một vấn đề với chế độ xem web Android trên thiết bị của tôi không được xây dựng trong việc thực hiện cấu trúc dữ liệu đã đặt. Để gây nhầm lẫn thêm các vấn đề, tôi đã thử nghiệm cùng một ứng dụng này trên một thiết bị khác [HTC One M8 [Android 5.0.1, API 21]] và nó hoạt động tốt mà không có lỗi nào được hiển thị. Có ai biết cách khắc phục điều này không?
Có vẻ như bản phát hành 1.8.6 mới nhất đang ném lỗi trong các phiên bản cũ hơn của Node/V8 không hỗ trợ đối tượng đã đặt.
➜ bunyan node test.js
/Users/justinmcconnell/Documents/code/bunyan/node_modules/bunyan/lib/bunyan.js:1200
var safeCycles = Set ? safeCyclesSet : safeCyclesArray;
^
ReferenceError: Set is not defined
at Object. [/Users/justinmcconnell/Documents/code/bunyan/node_modules/bunyan/lib/bunyan.js:1200:18]
at Module._compile [module.js:456:26]
at Object.Module._extensions..js [module.js:474:10]
at Module.load [module.js:356:32]
at Function.Module._load [module.js:312:12]
at Module.require [module.js:364:17]
at require [module.js:380:17]
at Object. [/Users/justinmcconnell/Documents/code/bunyan/test.js:3:14]
at Module._compile [module.js:456:26]
at Object.Module._extensions..js [module.js:474:10]
Tôi tin rằng điều này có thể được giải quyết đơn giản bằng cách thay đổi dòng 1200 thành:
myMethod: function[userid] {
var user = [];
var service = this;
var userIDs = new Set[];
var promises = [];
...}
1myMethod: function[userid] {
var user = [];
var service = this;
var userIDs = new Set[];
var promises = [];
...}
1Phiên bản nút của tôi:
➜ bunyan node -v
v0.10.37
package.json:
{
"dependencies": {
"bunyan": "1.8.5"
}
}
test.js:
'use strict';
var bunyan = require['bunyan'];
console.log['required'];
Ngoại lệ JavaScript "biến không được xác định" xảy ra khi có biến không tồn tại được tham chiếu ở đâu đó.Thông điệp
ReferenceError: "x" is not defined [V8-based & Firefox]
ReferenceError: Can't find variable: x [Safari]
Loại lỗi
Có chuyện gì?
Có một biến không tồn tại được tham chiếu ở đâu đó. Biến này cần được khai báo, hoặc bạn cần đảm bảo rằng nó có sẵn trong tập lệnh hoặc phạm vi hiện tại của bạn.
Lưu ý: Khi tải thư viện [chẳng hạn như jQuery], hãy đảm bảo nó được tải trước khi bạn truy cập các biến thư viện, chẳng hạn như "$". Đặt phần tử
2 tải thư viện trước mã của bạn sử dụng nó. When loading a library [such as jQuery], make sure it is loaded before you access library variables, such as "$". Put the myMethod: function[userid] {
var user = [];
var service = this;
var userIDs = new Set[];
var promises = [];
...}
myMethod: function[userid] {
var user = [];
var service = this;
var userIDs = new Set[];
var promises = [];
...}
2 element that loads the library
before your code that uses it. Ví dụ
Biến không được khai báo
foo.substring[1]; // ReferenceError: foo is not defined
Biến "FOO" không được xác định ở bất cứ đâu. Nó cần phải là một số chuỗi, để phương pháp
myMethod: function[userid] {
var user = [];
var service = this;
var userIDs = new Set[];
var promises = [];
...}
3 sẽ hoạt động.const foo = 'bar';
foo.substring[1]; // "ar"
Phạm vi sai
Một biến cần phải có sẵn trong bối cảnh thực thi hiện tại. Các biến được xác định bên trong một hàm không thể được truy cập từ bất cứ nơi nào bên ngoài hàm, bởi vì biến chỉ được xác định trong phạm vi của hàm
function numbers[] {
const num1 = 2;
const num2 = 3;
return num1 + num2;
}
console.log[num1]; // ReferenceError num1 is not defined.
Tuy nhiên, một hàm có thể truy cập tất cả các biến và hàm được xác định bên trong phạm vi mà nó được xác định. Nói cách khác, một hàm được xác định trong phạm vi toàn cầu có thể truy cập tất cả các biến được xác định trong phạm vi toàn cầu.
myMethod: function[userid] {
var user = [];
var service = this;
var userIDs = new Set[];
var promises = [];
...}
0