2014-08-29 2 views
0

У меня возникли трудности с настройкой client.js-клиента для подключения к сокету в java. браузер всегда дает мне эту ошибкуnode.js и обновить версию

Uncaught ReferenceError: require is not defined

и я использовал его в моем HTML-страницу

<script type="text/javascript"> 

    $(function() { 

     // open websocket 

     var net = require('net'); 
     var socket = net.connect(8000, 'localhost'); 

    }) 
    </script> 

я установил Node.js с помощью git clone https://github.com/joyent/node.git и browserify по sudo npm install -g browserify. Я использовал sudo, потому что он выдает permission error, что я должен выполнить команду с уровнем администратора.

после установки browserify я все еще получаю ошибку в моем браузере

Uncaught ReferenceError: require is not defined 

я понимаю мою ошибку i'am пытается импортировать nodejs в HTML, который не применим. Следующее, что я делаю это с browserify, когда я пытаюсь browserify index.js -o bundle.js это показывает эта ошибка

/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_readable.js:906 
     ret = Buffer.concat(list, length); 
       ^
TypeError: Object function Buffer(subject, encoding, offset) { 
    if (!(this instanceof Buffer)) { 
    return new Buffer(subject, encoding, offset); 
    } 

    var type; 

    // Are we slicing? 
    if (typeof offset === 'number') { 
    this.length = coerce(encoding); 
    this.parent = subject; 
    this.offset = offset; 
    } else { 
    // Find the length 
    switch (type = typeof subject) { 
     case 'number': 
     this.length = coerce(subject); 
     break; 

     case 'string': 
     this.length = Buffer.byteLength(subject, encoding); 
     break; 

     case 'object': // Assume object is an array 
     this.length = coerce(subject.length); 
     break; 

     default: 
     throw new Error('First argument needs to be a number, ' + 
         'array or string.'); 
    } 

    if (this.length > Buffer.poolSize) { 
     // Big buffer, just alloc one. 
     this.parent = new SlowBuffer(this.length); 
     this.offset = 0; 

    } else { 
     // Small buffer. 
     if (!pool || pool.length - pool.used < this.length) allocPool(); 
     this.parent = pool; 
     this.offset = pool.used; 
     pool.used += this.length; 
    } 

    // Treat array-ish objects as a byte array. 
    if (isArrayIsh(subject)) { 
     for (var i = 0; i < this.length; i++) { 
     this.parent[i + this.offset] = subject[i]; 
     } 
    } else if (type == 'string') { 
     // We are a string 
     this.length = this.write(subject, 0, encoding); 
    } 
    } 

    SlowBuffer.makeFastBuffer(this.parent, this, this.offset, this.length); 
} has no method 'concat' 
    at fromList (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_readable.js:906:20) 
    at Transform.read (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_readable.js:373:11) 
    at flow (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_readable.js:629:52) 
    at Array.0 (/usr/local/lib/node_modules/browserify/node_modules/readable-stream/lib/_stream_readable.js:600:7) 
    at EventEmitter._tickCallback (node.js:190:38) 

эта ошибка с browserify? пример моих nodejs

server.js

var http = require("http"); 
var url = require("url"); 

function start(route) { 
    function onRequest(request, response) { 
    var pathname = url.parse(request.url).pathname; 
    console.log("Request for " + pathname + " received."); 

    route(pathname); 

    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write("Hello World"); 
    response.end(); 
    } 

    http.createServer(onRequest).listen(8888); 
    console.log("Server has started."); 
} 

exports.start = start; 

router.js

function route(pathname) { 
    console.log("About to route a request for " + pathname); 
} 
exports.route = route; 

index.js

var server = require("./server"); 
var router = require("./router"); 

server.start(router.route); 

this моя ссылка.

+0

Browserify не позволяет создавать сокеты, даже если вы действительно включаете его на свою страницу. – SLaks

+0

Я имею в виду, что он говорит, что если я установил браузер, он позволит мне использовать функцию 'require' @SLaks –

+0

Прочитайте документацию о том, как использовать Browserify, просто ее установка ничего не сделает. Вы должны создать пакет для включения в браузер. – elclanrs

ответ

0

Вы пропустили важный шаг в процессе работы с браузером. То, что браузер делает, превращает ваш javascript из «work-in-node» в «works-in-the-browser», и для этого требуется фактически запустить инструмент командной строки browserify на вашем javascript, который будет генерировать для вас новый файл javascript («bundle»,), которые затем можно ссылаться в теге <script>, загружать в браузер и работать правильно. Повторите упражнение и обратите внимание на этот шаг.

+0

Я видел некоторые учебники, но я не знаю, куда положить строку 'browserify ./x.js> main.js', и я не знаю, что должно содержать' x.js'. не могли бы вы дать мне фрагмент? @PeterLyons –

+0

Возьмите весь код, который у вас встроен в свой тег ' 'в вашем HTML и использовать браузеру на командной строки для генерации 'main.js' из файла вашей точки приложения' x.js'. –

+0

спасибо, но когда я пытаюсь создать главную.js я получил ошибку выше. Я использую 'browserify x.js -o main.js' –

Смежные вопросы