簡體   English   中英

Vue + Typescript + Webpack:模塊構建失敗 - 找不到vue.esm.js

[英]Vue + Typescript + Webpack: Module build failing - Can't find vue.esm.js

我正在嘗試使用typescript,webpack和vue.js構建一個基本項目。 但是,當我從命令行運行webpack時,我目前收到以下錯誤:

ERROR in ./node_modules/vue/dist/vue.esm.js
Module build failed: Error: Could not find file: 'c:\Users\user\Games\javascriptTimeGame\node_modules\vue\dist\vue.esm.js'.
    at getValidSourceFile (c:\Users\user\Games\javascriptTimeGame\node_modules\typescript\lib\typescript.js:89078:23)
    at Object.getEmitOutput (c:\Users\user\Games\javascriptTimeGame\node_modules\typescript\lib\typescript.js:89448:30)
    at getEmit (c:\Users\user\Games\javascriptTimeGame\node_modules\ts-loader\dist\index.js:122:43)
    at successLoader (c:\Users\user\Games\javascriptTimeGame\node_modules\ts-loader\dist\index.js:42:11)
    at Object.loader (c:\Users\user\Games\javascriptTimeGame\node_modules\ts-loader\dist\index.js:29:12)

這很奇怪,因為它說它無法找到的文件肯定存在。

我的主要腳本: script.ts ,看起來像:

import Vue from 'vue'

function main(){
  let vueApp = new Vue({
    el: "#vue-test",
    data : {
      message: "Hello World"
    }
  });
}

main();

我的tsconfig.json看起來像:

{
  "compileOnSave":  true,
  "compilerOptions": {
    "target": "es6",
    "module": "es6",
    "moduleResolution": "node",
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "removeComments": true,
    "preserveConstEnums": true,
    "sourceMap": true,
    "outDir": "../jsDist",
    "allowJs": true
  }
}

我的package.json dev依賴項看起來像:

  "devDependencies": {
    "@types/vue": "^2.0.0",
    "http-server": "^0.10.0",
    "node-sass": "^4.5.3",
    "npm-run-all": "^4.0.2",
    "ts-loader": "^2.3.3",
    "typescript": "^2.4.2",
    "vue": "^2.4.2",
    "watch": "^1.0.2",
    "webpack": "^3.5.5"
  }
}

我的webpack.config.js看起來像:

module.exports = {
    devtool: 'inline-source-map',
    entry: "./ts/script.ts",
    output: {
        filename: "bundle.js",
        path: `${__dirname}/jsDist`
    },
    module: {
        rules : [
            {
                loader: 'ts-loader'
            }
        ]
    },
    resolve: {
        extensions: ['.ts', '.js'],
        alias: {
            'vue$': 'vue/dist/vue.esm.js'
        },
    }
}

我注意到的一些事情可能會隔離問題。

首先,如果我只是運行tsc來使用typescript編譯器直接構建我的源文件,那么它可以正常工作而不會出錯。 這表明webpack部分有問題。

第二,如果我改變script.ts只是:

import Vue from 'vue'

function main(){
  console.log("Harmless");
}

main();

然后webpack構建它沒有大驚小怪。 這表明它不是webpack似乎有問題的頂級導入,而是具體使用 Vue。

最后,如果我改變我的webpack.config.js,使ts-loader有額外的選項transpileOnly: true然后它似乎也沒有大驚小怪(但當然我不想這樣做,因為那時我失去了我的理由首先使用打字稿!)

可能導致此錯誤的任何想法?

嘗試這個:

import Vue from 'vue';

let vueApp = {};

if (document.querySelector('#authorities-container')) {
  vueApp = new Vue({
    el: "#vue-test",
    data : {
      message: "Hello World"
    }
  });
};

export {vueApp}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM