【问题标题】:Google Blockly `namespace never provided` Error with closure-compiler.jarGoogle Blockly“从未提供过命名空间”closure-compiler.jar 错误
【发布时间】:2018-03-20 13:28:18
【问题描述】:

我问过这个issue,但我仍然无法解决问题。我收到类似required "Blockly" namespace never provided 的错误。

我按照Google bLocklyAdvanced Compilation教程来试试。我没有在 Blockly 根目录中创建新目录进行测试,而是使用blocklyclosure-library 作为项目中的子目录(子模块),如下所示:

project
├─blockly
├─closure-library
├─closure-compiler.jar
├─index.html
└─main.js

然后使用如下命令编译文件:

java -jar closure-compiler.jar --js='main.js' ^
  --js='./blockly/**.js' ^
  --js='!./blockly/externs/**.js' ^
  --js='!./blockly/msg/messages.js' ^
  --js='./closure-library/closure/goog/**.js' ^
  --js='./closure-library/third_party/closure/goog/**.js' ^
  --generate_exports ^
  --externs ./blockly/externs/svg-externs.js ^
  --compilation_level ADVANCED_OPTIMIZATIONS ^
  --dependency_mode=STRICT --entry_point=Main ^
  --js_output_file main_compressed.js

堆栈跟踪

main.js:3: ERROR - required "Blockly.Msg.en" namespace never provided
goog.require('Blockly.Msg.en');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

main.js:5: ERROR - required "Blockly" namespace never provided
goog.require('Blockly');
^^^^^^^^^^^^^^^^^^^^^^^

main.js:7: ERROR - required "Blockly.Constants.Logic" namespace never provided
goog.require('Blockly.Constants.Logic');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

main.js:8: ERROR - required "Blockly.Constants.Loops" namespace never provided
goog.require('Blockly.Constants.Loops');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

main.js:9: ERROR - required "Blockly.Constants.Math" namespace never provided
goog.require('Blockly.Constants.Math');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

main.js:10: ERROR - required "Blockly.Constants.Text" namespace never provided
goog.require('Blockly.Constants.Text');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

6 error(s), 0 warning(s)

操作系统

OS: Windows 7
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
Closure Compiler Version: v20180204

P.S.即使我按照教程中的所有步骤操作,我也会遇到同样的错误(与教程相同的目录结构)

【问题讨论】:

    标签: google-closure-compiler google-closure-library blockly


    【解决方案1】:

    通常,“从未提供命名空间”错误是由于未将提供该命名空间的文件传递给编译器造成的。您的目录布局非常好,但是对于实际命令,我发现最好指定您想要的文件,而不是使用 !操作员。我看到很多人对此有问题。我会尝试以下方法:

    `java -jar closure-compiler.jar --js='main.js' \
      --js='blockly/blocks/**.js' \
      --js='blockly/core/**.js' \
      --js='blockly/generators/**.js' \
      --js='blockly/msg/js/**.js' \
      --js='closure-library/closure/goog/**.js' \
      --js='closure-library/third_party/closure/goog/**.js' \
      --generate_exports \
      --externs blockly/externs/svg-externs.js \
      --compilation_level ADVANCED_OPTIMIZATIONS \
      --dependency_mode=STRICT --entry_point=Main \
      --output_manifest manifest.MF
      --js_output_file main_compressed.js`
    

    请注意,这将允许您通过在 manifest.MF 中列出文件来查看实际正在编译的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多