# 1. 获取相对路径

const filePath = '/Users/mike/Documents/press-ui/node_modules/css-loader/dist/runtime/api.js';
const res = path.relative(process.cwd(), filePath);

// node_modules/css-loader/dist/runtime/api.js
// 如果filePath是绝对路径,这个方式可以获取其绝对路径

# 2. js对象元素自动排序

js对象key为数字时,其元素会自动排序

const obj = { 2: 2, 0: 0 }
console.log(Object.keys(obj))
// 0 2

for (let item in obj) console.log(item)
// 0 2

参考:https://juejin.cn/post/7041049741458669576

# 3. script error

服务器端如果没有设置 CORS,普通的跨域<script>标签,将只向window.onerror反馈尽量少的内容。

window.onerror = (...args) => console.log(args);  // ["Script error.", "", 0, 0, null]

<script>标签添加 crossorigin 属性,

并在服务器端设置 Access-Control-Allow-Origin 响应头,允许脚本被跨域访问,

就可以在 window.onerror 中获取更详细的日志信息。

[
    "Uncaught ReferenceError: a is not defined", 
    "http://127.0.0.1:8081/index.js", 
    1, 
    1, 
    ReferenceError: a is not defined
        at http://127.0.0.1:8081/index.js:1:1]

注:

普通<script>标签是可以加载跨域脚本的,但如果给跨域<script>标签添加了crossorigin属性,(且服务器端没有设置 Access-Control-Allow-Origin 响应头),就会出现以下错误,

Access to Script at 'http://127.0.0.1:8081/index.js' from origin 'http://127.0.0.1:8080' has been blocked by CORS policy: 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://127.0.0.1:8080' is therefore not allowed access.

参考:https://www.jianshu.com/p/a45c9d089c93