lua中使用packagepath解决多个项目的路径冲突问题

当多个lua项目在同一台服务器中有多个文件的文件名相同时,会优先使用路径中的排在前的项目的文件,导致引用的文件并不是你预期的那样。

例如:有项目A和项目B,都有一个文件test.lua,而test.lua这个文件在项目A和项目B内容都是不一样的,如果nginx的配置中,lua的packagepath是把项目A放在了前面。那么项目B在引用test.lua的时候,会使用了项目B的test.lua文件,这就导致了错误的出现。

那要如何解决这个问题呢?

我们可以在各自的项目中,重新定义packagepath。这样就避免了路径冲突的问题。

例子:

代码如下:

local p = "/diska/htdocs/work/"
local m_package_path = package.path
package.path = string.format("%s?.lua;%s?/init.lua;%s", p, p, m_package_path)

(0)

相关推荐

  • lua中使用packagepath解决多个项目的路径冲突问题

    当多个lua项目在同一台服务器中有多个文件的文件名相同时,会优先使用路径中的排在前的项目的文件,导致引用的文件并不是你预期的那样. 例如:有项目A和项目B,都有一个文件test.lua,而test.lua这个文件在项目A和项目B内容都是不一样的,如果nginx的配置中,lua的packagepath是把项目A放在了前面.那么项目B在引用test.lua的时候,会使用了项目B的test.lua文件,这就导致了错误的出现. 那要如何解决这个问题呢? 我们可以在各自的项目中,重新定义packagepa

  • 解决在vue项目中,发版之后,背景图片报错,路径不对的问题

    解决方法: 在utils.js里边的 加上publicPath:'../../', 在引入图片或者背景图的时候,使用方法: 以上这篇解决在vue项目中,发版之后,背景图片报错,路径不对的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: 关于Vue背景图打包之后访问路径错误问题的解决 vue-cli中打包图片路径错误的解决方法 关于vue.js发布后路径引用的问题解决 vue cli使用绝对路径引用图片问题的解决 详解vue-cil和webp

  • 解决在vue项目中webpack打包后字体不生效的问题

    最近在项目开发过程中遇到如下问题:开发环境中设置的字体样式使用webpack打包后到生产环境不生效.如图: 打开控制台查看元素样式,发现在开发环境的时候"微软雅黑"被解析成unicode编码并且带着双引号, 但使用webpack打包以后,"微软雅黑"的双引号被错误解析并多加了个反斜杠,导致字体不生效. 解决方法: 尝试了一下去掉双引号,也就是font-family:微软雅黑,这样浏览器并不会把中文字体用unicode编码,样式也可以正常显示.但为了更好的兼容性,这里

  • Vue中component标签解决项目组件化操作

    一. 啰嗦几句 在vue项目组件化的过程中,遇到了一些问题,什么问题呢?就是在做一个多功能,多可用,多兼容的大组件的时候,发现在这个组件内部,实现了太多的if.for逻辑,包括大量的html元素,虽然说每段功能块都有批注,但是体积还是比较庞大,最近有些需求,需要将页面上的一大块筛选功能剥离开,形成单独的组件,统一数据渲染,统一组件管理,且这些功能无论是样式,或者是从结构来说,差异性都很大,所以考虑了以下几种开发方式: 1. 大容量单组件开发,渲染和传入的数据使用各种type.ctype判断 2.

  • 解决idea web项目中out目录更新不同步问题

    今天碰到个很恶心的东西..就是明明导入了相应的依赖文件(css,html,js等文件),路径也正确..就是访问不了....弄了一个多小时... 原因在哪?看了一下web项目的生成位置,发现编译之后会重新生成一个out目录,更新不同步.... 解决方法:build->Build Artifact->clean,然后再build->build Artifact->rebuild...问题解决.. 如果使用的是maven构建的web项目,就简单很多直接cmd定位到项目根节点,有pom.x

  • Vue项目中该如何解决跨域问题

    目录 跨域 同源策略 express服务器 vue处理跨域 express处理跨域 总结 跨域 跨域报错是前端开发中非常经典的一个错误,报错如下 Access to XMLHttpRequest at '......' from origin  '......' has been blocked by CORS policy:  No 'Access-Control-Allow-Origin' header is present on the requested resource. 跨域错误源自

  • Lua中的模块(module)和包(package)详解

    前言 从Lua5.1版本开始,就对模块和包添加了新的支持,可是使用require和module来定义和使用模块和包.require用于使用模块,module用于创建模块.简单的说,一个模块就是一个程序库,可以通过require来加载.然后便得到了一个全局变量,表示一个table.这个table就像是一个命名空间,其内容就是模块中导出的所有东西,比如函数和常量,一个符合规范的模块还应使require返回这个table.现在就来具体的总结一下require和module这两个函数. require函

  • Lua中的面向对象编程详解

    简单说说Lua中的面向对象 Lua中的table就是一种对象,看以下一段简单的代码: 复制代码 代码如下: local tb1 = {a = 1, b = 2} local tb2 = {a = 1, b = 2} local tb3 = tb1   if tb1 == tb2 then      print("tb1 == tb2") else      print("tb1 ~= tb2") end   tb3.a = 3 print(tb1.a) 上述代码会输

  • 解析Lua中的全局环境、包、模块组织结构

    模块就是一个程序库,而包是一系列模块.Lua中可以通过require来加载模块,然后得到一个全局变量表示一个table.Lua将其所有的全局变量保存在一个被称为"环境"的常规table中.本文首先介绍环境的一些实用技术,然后介绍如何引用模块及编写模块的基本方法. 1. 环境 Lua将环境table保存在一个全局变量_G中,可以对其访问和设置.有时我们想操作一个全局变量,而它的名称却存储在另一个变量中,或者需要通过运行时的计算才能得到,可以通过value = _G[varname]来获得

  • Lua中的table浅析

    Lua的table提供了Map的功能,实现了"关联数组",并且整数.字符串甚至nil都可以作为索引/key:table没有固定的大小.   基于table,可以表示普通数组.符号表.集合.记录.队列和其他数据结构.   而Lua也是通过table来解决模块(module).包(package)和对象(Object)的. 例如io.read表示使用"read"来索引table io.   在Lua中,table既不是值也不是"变量",而是对象,可以

随机推荐