2017-06-30 47 views
1

我一直試圖讓這個工作一天左右,現在沒有運氣。 Webpack似乎不會將kotlin npm模塊注入到我的測試中,即使它是由webpack加載的。所以它會拋出下面的錯誤,說它找不到它。Karma無法解決kotlin-frontend-plugin中的依賴關係'kotlin'

這裏的錯誤日誌:

      Asset  Size Chunks   Chunk Names 
          main 1.55 MB  0 [big] main 
classes/java/test/vuekt_test.js 1.37 MB  1 [big] classes/java/test/vuekt_test.js 
chunk {0} main (main) 1.55 MB [entry] 
    [0] ./~/process/browser.js 5.42 kB {0} {1} 
    [1] ./~/kotlin/kotlin.js 1.31 MB {0} {1} 
    [2] ./js/kitchensink/kotlin/MyComponent.html 2.59 kB {0} {1} 
    [3] ./js/kitchensink/kotlin/VueApp.html 725 bytes {0} {1} 
    [4] ./~/vue/dist/vue.runtime.esm.js 187 kB {0} 
    [5] ./js/vuekt.js 40 kB {0} 
    [6] (webpack)/buildin/global.js 509 bytes {0} 
chunk {1} classes/java/test/vuekt_test.js (classes/java/test/vuekt_test.js) 1.36 MB [entry] 
    [0] ./~/process/browser.js 5.42 kB {0} {1} 
    [1] ./~/kotlin/kotlin.js 1.31 MB {0} {1} 
    [2] ./js/kitchensink/kotlin/MyComponent.html 2.59 kB {0} {1} 
    [3] ./js/kitchensink/kotlin/VueApp.html 725 bytes {0} {1} 
    [7] ./classes/java/test/vuekt_test.js 40.6 kB {1} [built] 
webpack: Compiled successfully. 
webpack: Compiling... 
30 06 2017 08:36:42.464:INFO [PhantomJS 2.1.1 (Windows 7 0.0.0)]: Connected on socket RaGM1IMTAMuV2JRuAAAA with id 80698172 
PhantomJS 2.1.1 (Windows 7 0.0.0) ERROR 
    Error: Error loading module 'vuekt_test'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'vuekt_test'. 
    at classes/java/test/vuekt_test.js:35113 

正如你可以在這行[1] ./~/kotlin/kotlin.js 1.31 MB {0} {1}在日誌中看到,科特林-STDLIB-JS資源正在被加載的WebPack,因爲它應該。

它也包含在main包,你可以看到在這條線被載入

main 1.55 MB  0 [big] main 

但是,它沒有被注入vuekt_test.js。這就是爲什麼你看到上面的錯誤被拋出。

我不知道如何讓它注入kotlin雖然。

這是我在build.gradle配置:

kotlinFrontend { 
    npm { 
     dependency("vue", "2.3.4") 

     devDependency("vue-template-compiler", "2.3.4") 
     devDependency("vue-template-es2015-compiler", "1.5.2") 
     devDependency("vue-template-loader", "0.3.1") //this requires the above 2 devDependencies 

     devDependency("webpack", "2.6.1") 
     devDependency("webpack-dev-server", "2.4.4") 
     devDependency("css-loader", "0.28.4") 
     devDependency("style-loader", "0.18.2") 
     devDependency("to-string-loader", "1.1.5") 
     devDependency("file-loader", "0.11.2") 

     devDependency("karma") 
    } 

    webpackBundle { 
     bundleName = "main" 
     contentPath = file('src/web') 
     port = 9002 
    } 

    karma { 
     port = 9876 
     runnerPort = 9100 
     reporters = ["progress"] 
     frameworks = ["qunit"] 
    } 
} 

這裏是karma.conf.js文件:

var webpackConfig = require("C:\\my_workspace\\vue.kt\\build\\webpack.config.js"); 
webpackConfig.resolve.modules.push("C:\\my_workspace\\vue.kt\\build\\classes\\java\\test\\vuekt_test.js"); 

module.exports = function (config) { 
config.set({ 
    "basePath": "C:\\my_workspace\\vue.kt\\build", 
    "frameworks": [ 
     "qunit" 
    ], 
    "reporters": [ 
     "progress" 
    ], 
    "files": [ 
     "C:\\my_workspace\\vue.kt\\build\\classes\\java\\test\\vuekt_test.js" 
    ], 
    "exclude": [ 
     "*~", 
     "*.swp", 
     "*.swo" 
    ], 
    "port": 9876, 
    "runnerPort": 9100, 
    "colors": false, 
    "autoWatch": true, 
    "browsers": [ 
     "PhantomJS" 
    ], 
    "captureTimeout": 5000, 
    "singleRun": false, 
    "preprocessors": { 
     "C:\\my_workspace\\vue.kt\\build\\classes\\java\\test\\vuekt_test.js": [ 
      "webpack" 
     ] 
    }, 
    "plugins": [ 
     "karma-phantomjs-launcher", 
     "karma-qunit", 
     "karma-webpack" 
    ], 
    "client": { 
     "clearContext": false, 
     "qunit": { 
      "showUI": true, 
      "testTimeout": 5000 
     } 
    }, 
    "webpack": webpackConfig 
}) 
}; 

什麼我需要做什麼來解決這個問題?

回答

2

經過一些額外的試驗和錯誤後,我發現我需要聲明測試應編譯到的模塊類型。

添加此我build.gradle文件解決了這一問題:

compileTestKotlin2Js { 
    kotlinOptions.metaInfo = true 
    kotlinOptions.moduleKind = 'commonjs' 
}