Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何访问外部js文件中的Vue.prototype?_Node.js_Vue.js - Fatal编程技术网

Node.js 如何访问外部js文件中的Vue.prototype?

Node.js 如何访问外部js文件中的Vue.prototype?,node.js,vue.js,Node.js,Vue.js,我在main.js中定义了属性: "vue": "^2.4.4" 我在src/common中有另一个名为version.js的js文件 Object.defineProperties(Vue.prototype, { baseURL: { value: process.env.API_ROOT, writable: false } }); 我无法理解控制台日志: 原型1包含baseURL,但baseURL 1未定义。 原型2不包

我在main.js中定义了属性:

"vue": "^2.4.4"
我在src/common中有另一个名为version.js的js文件

Object.defineProperties(Vue.prototype, {
  baseURL: {
    value: process.env.API_ROOT,
    writable: false
  }
});
我无法理解控制台日志: 原型1包含baseURL,但baseURL 1未定义。 原型2不包含baseURL,baseURL 2未定义


如果我想在version.js中获取baseURL。我该怎么办?

第一个问题是,只有前缀为
VUE\u APP\u
.env
属性才能将其放入捆绑文件中

请注意,只有
NODE\u ENV
BASE\u URL
和以
VUE\u APP\u
开头的变量将通过
webpack.DefinePlugin>静态嵌入到客户端包中

.env
文件更改为

import Vue from "vue";
let app = new Vue({
  el: "#app",
})
console.log("---------------------version start---------------------")
console.log("prototype 1:", Vue.prototype)
console.log("baseURL 1:", Vue.prototype.baseURL)
console.log("---------------------version end---------------------")

console.log("---------------------app start---------------------")
console.log("prototype 2:", app)
console.log("baseURL 2:", app.baseURL)
console.log("---------------------app end---------------------")
第二,这正是我们的目的

  • 通过将某些Vue实例方法附加到Vue.prototype,添加它们
  • 你可以很简单地这样做

    //base-url-plugin.js
    导出默认值{
    安装:Vue=>{
    Object.defineProperty(Vue.prototype,“baseURL”{
    值:process.env.VUE_APP_API_ROOT??”https://some-default/",
    可写:false
    })
    }
    }
    
    从“Vue”导入Vue
    从“/path/to/base-url-plugin.js”导入baseUrlPlugin
    //首先安装插件
    使用(baseUrlPlugin)
    //现在创建您的根Vue实例
    让应用程序=新Vue({
    el:“应用程序”,
    })
    

    您只需确保在创建根Vue实例之前安装了插件。

    如何确保在创建根Vue实例之前安装了我的插件?这是您的代码员,只需确保您运行
    Vue。请在
    让app=new Vue({…})
    之前使用({…})
    位。我已经更新了我的答案,试图让它更清晰,就像JavaSpringbeans一样,我可以初始化任何常见的地方。然后我可以在整个项目中使用它。我真的不理解你的问题。上面的代码只在一个地方
    VUE_APP_API_ROOT=https://whatever/