2016-10-07 44 views
0

使用ProtoBuff處理獲取其內容的項目。通過在HTML中加載JavaScript來使其工作一次。現在重構使用requirejs來加載腳本。但是當我嘗試使用這些腳本時,它給出了一個錯誤,告訴我這些腳本沒有加載。加載:long,ByteBuffer和ProtoBuff with requirejs

  • Require.js被裝載在鮑爾用於管理的依賴關係中的index.html

我很確定我錯過了這裏的一個(簡單)事情,希望有人能幫上忙。

requirejs.config({ 
    long : "long", 
    ByteBuffer : "ByteBuffer", 
    ProtoBuf : "ProtoBuf" 
}); 

requirejs([ "long", "ByteBuffer", "ProtoBuf" ], 
    function(long, ByteBuffer, ProtoBuf) { 
}); ​ 

文件long.js,ByteBuffer.js和ProtoBuf.js都在同一地圖的App.js,在這個被調用。

*雖然這question about requirejs and ByteBuffer看起來很有希望,我想我在這裏失去了一些東西。

這並不工作,這些文件中的功能範圍的其餘部分中訪問:

requirejs([ "otherPage", "differentPage" ], 
    function(util) { 
}); 
+0

嗯..是你*的*失去了一些東西一些代碼,因爲配置告訴你不能可能工作。它看起來像你試圖設置路徑,所以你顯示的所有鍵值對都必須在['paths'](http://requirejs.org/docs/api.html#config-paths)中。但是這並不是唯一的問題,因爲即使你進行了這個修復,你在'paths'中的內容也不過是RequireJS默認*所做的。您可能需要將您的'baseUrl'設置設置爲正確的值。 – Louis

+0

在普通的requirejs方法不起作用後,我嘗試添加requirejs.config ...很好地加載了其他腳本。 – Flummox

回答

1

你需要確保你有正確掛接requirejs以及是否有相關的原庫加載。

您可以使用bower來管理依賴關係。安裝bower然後

bower install long byteBuffer protobuf requirejs-text requirejs-proto 

最後的代碼可以是這個樣子:

require.config({ 
    paths: { 
     'Long': '../../bower_components/long/dist/Long', 
     'ByteBuffer': '../../bower_components/byteBuffer/dist/ByteBufferAB', 
     'ProtoBuf': '../../bower_components/protobuf/dist/ProtoBuf', 
     'text': '../../bower_components/requirejs-text/text', 
     'proto': '../../bower_components/requirejs-proto/proto' 
    }, 
    proto: { 
     ext: 'proto', 
     convertFieldsToCamelCase: false, 
     populateAccessors: true 
    } 
}); 

require(['proto!test'], function(builder) { 
    var pack = builder.build('pack'); 
    var Message1 = builder.build('pack.Message1'); 
}); 

require(['proto!test::pack.Message1', 'proto!test::pack.Message2'], function(Message1, Message2) { 
    ... 
}); 

https://www.npmjs.com/package/requirejs-proto

+0

得到它的工作!謝謝! – Flummox