【问题标题】:vue.js with vue-multilanguage My webpack compilate is not translated rightvue.js 和 vue-multilanguage 我的 webpack 编译没有正确翻译
【发布时间】:2018-01-05 23:38:28
【问题描述】:

我的 webpack 编译没有转译成正确的 JS。它写道

exports default MultiLanguage 代替 module.exports = { MultiLanguage: MultiLanguage};

我的.bablerc

{
  "presets": ["es2015", "stage-0"],
  "plugins": ["transform-runtime"]
}

我的 package.json

{
  "name": "myapp",
  "version": "0.0.1",
  "description": "My app",
  "dependencies": {
    "bootstrap": "^3.3.7",
    "vue": "^2.4.2",
    "vue-multilanguage": "^2.1.1"
  },
  "devDependencies": {
    "babel-cli": "^6.24.1",
    "babel-core": "^6.25.0",
    "babel-loader": "^6.4.1",
    "babel-plugin-transform-runtime": "^6.1.2",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-0": "^6.1.2",
    "babel-runtime": "^5.8.0",
    "webpack": "^1.15.0"
  },
  "author": "You"
}

我的 webpack.config.js

module.exports = {
  entry: './src/main.js',
  output: {
    path: './dist',
    filename: 'build.js'
  },
  module: {
    loaders: [
      {

        test: /\.js$/,
        loader: 'babel',
        exclude: /node_modules/
      }
    ]
  }
}

因此在 build.js 中出现错误和代码 在 Chromium/Chrome 和 ubuntu 中:

Uncaught SyntaxError: Unexpected token export

在 Firefox 中:

SyntaxError: export declarations may only appear at top level of a module
    export default MultiLanguage

这里还有vue代码(main.js):

import Vue from 'vue/dist/vue.js'
import MultiLanguage from 'vue-multilanguage/src/vue-multilanguage.js'

Vue.use(MultiLanguage, {
    default: 'en',
    en: {
        hi: 'Hello',
        welcome: 'Welcome, {name}'
    },
    pt: {
        hi: 'Ola',
        welcome: 'Bem-vindo, {name}'
    }
})

有什么推荐的教程吗?有什么想法吗?

当我用 module.exports = { MultiLanguage: MultiLanguage}; 替换 build.js 中的行时,不会发生错误

【问题讨论】:

  • 我从未使用过您之前使用的元素属性语法。这可能会导致您的错误。你检查过控制台吗?我几乎可以打赌,由于 v.lang.welcome 属性,vue 在渲染模板时遇到了问题。我认为这不是正确的 html5。
  • 我必须承认。我从模块教程中复制了它
  • 我建议您寻找另一个教程,因为您使用的语法与我见过的任何语法都不一样。
  • @MiguelCabrera 语法看起来不错,根据:github.com/leonardovilarinho/vue-multilanguage(模块制造商的教程)
  • 你可能是对的,但我已经在 Vue2 中专门编写代码一年多了,我从未见过import Vue from 'vue/dist/vue.js',通常我只是import Vue from 'vue'

标签: node.js debugging webpack vue.js babeljs


【解决方案1】:

您的问题与您的导入有关。

vue-multilanguage.js 不是由其作者提供预编译的(这种情况很少见,通常库包含一个可以使用的 dist 文件......)并且因为它位于您的 node_modules 文件夹中,所以它不是从ES6 到 ES5 也可以通过你的 babel 加载器来实现。您需要在 webpack.config.js 中添加一个例外。

module.exports = {
  entry: './src/main.js',
  output: {
    path: './dist',
    filename: 'build.js'
  },
  module: {
    loaders: [
      {

        test: /\.js$/,
        loader: 'babel-loader',
        // exclude everything from node_modules, except vue-multilanguage
        exclude: /node_modules(?![\\/]vue-multilanguage[\\/])/
      }
    ]
  }
}

不直接相关,但不是说我也用'babel-loader' 替换了'babel',以避免旧包的一些错误。 See here.

此外,您可以(并且您可能应该)如 cmets 中所述,以这种方式导入 vue。

import Vue from 'vue';

旁注

根据他们的package.json应该有一个可以在他们的库中使用的文件,位于dist/vue-multilanguage.js。但奇怪的是,他们将 dist 文件夹添加到了他们的 .npmignore 文件中,因此不包括在内。这可能是一个错误。我会在他们的 github 上发布一个问题。一旦它被纠正,并且如果你更新你的包,你应该能够像这样简单地导入 vue-multi(不向你的 webpack 配置添加任何异常):

import MultiLanguage from 'vue-multilanguage'

【讨论】:

  • 感谢您的回答。没有路径我无法导入 vue。为什么?我更改了排除部分,并且在我的 build.js 中仍然有普通的 ES6 导出。任何想法,您需要任何信息吗?
  • 当我再次替换该行时,我得到另一个错误:build.js:619 [Vue warn]: Failed to resolve directive: lang
  • 我在github上托管了一个最小的工作版本,看看和你的有什么不同:github.com/cobaltway/vue-multi-integration
  • 到目前为止,我没有时间检查您的解决方案。由于赏金明天就会用完,我今天无论如何都要奖励你的大力帮助。
【解决方案2】:

我会使用下一个导入:

import Vue from './vue';
import MultiLanguage from './vue-multilanguage';

【讨论】:

    猜你喜欢
    • 2019-06-30
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    相关资源
    最近更新 更多