Rollup-plugin-typescript2: خطأ: رمز مميز غير متوقع (استيراد أكسيوس)

تم إنشاؤها على ١٩ مارس ٢٠١٨  ·  8تعليقات  ·  مصدر: ezolenko/rollup-plugin-typescript2

[!] Error: Unexpected token
node_modules\axios\package.json (2:9)
1: {
2:   "_from": "axios",
            ^

نفس الخطأ عند استيراد axios إلى مشروع ES6 خالص وعدم وجود متصفح محدد = صحيح لحل التراكمي المكون الإضافي. حالة اختبار بسيطة: ملف js واحد يحتوي على

import axios from "axios";
window.process = window.process || { env: {} };
axios.get("http://httpbin.org/").then(response => console.log("Got length: " + response.data.length));

يؤدي استخدام الملف التالي rollup.config.js إلى ظهور الخطأ ، ولكن عند استبعاد البرنامج المساعد rollup-typescript2 ، فإنه يعمل.

إصدارات

  • العقدة: 8.9.4
  • مطبوعة: 2.7.2
  • تراكمي: 0.57.1
  • تجميع البرنامج المساعد-typecript2: 0.12.0

rollup.config.js

import typescript from 'rollup-plugin-typescript2';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';

export default {
    input: 'src/main.js',
    output: {
        file: 'public/bundle.js',
        format: 'iife',
        sourcemap: true
    },
    plugins: [
        typescript(),
        resolve({ browser: true }),
        commonjs()
    ]
};

التعليق الأكثر فائدة

بالنظر إلى الريبو التجريبي الخاص بك ، ينتج المكون الإضافي نفس الناتج tsc. يمكنك التحقق منه في ملف .rpt2_cache/xxx/code/xxx - ابحث عن خاصية json بالداخل code . هذا هو ما يتم تمريره إلى تراكمي.

الاختلاف الرئيسي في نتيجتين هو عندما يفعل import axios from 'axios'; - في حالات الاستحواذ العادي js التراكمية axios/dist/axios.js - إنشاء webpaked. في حالة استخدام البرنامج المساعد axios/lib/axios.js يتم حله.

يبدو أن Webpacked build هو إصدار المستعرض الذي تم العثور عليه بطريقة سحرية بواسطة rollup-plugin-node-resolve في وضع المتصفح.

إذا قمت بوضع البرنامج المساعد من نوع typecript في آخر السلسلة ، فإن التجميع يستخدم حل العقدة لحل عمليات الاستيراد بنفسه ، وكل شيء يعمل كما هو متوقع.

هذا السطر في ريبو الاختبار الخاص بك:
tsPluginConf.plugins.splice(tsPluginConf.plugins.length - 1, 0, typescript());

هذه هي المرة الأولى التي أرى فيها أهمية ترتيب المكون الإضافي :). سوف أقوم بتحديث الملف التمهيدي.

ال 8 كومينتر

هل يمكنك تجربة الاقتراح المقدم هنا: https://github.com/rollup/rollup-plugin-commonjs/issues/28 (باستخدام rollup-plugin-json)

شكرًا ، يبدو أن هذا يعمل (إضافة rollup-plugin-json كمكوِّن إضافي)!

يختلف الإخراج كثيرًا عن عرض ملف .js المقابل ، مع تحول توقيع iife

var SomeName = (function (exports,tty,util,url,http,https,assert,stream,zlib)...

كنت أتوقع أن يقوم rollup-plugin-typescript2 بتشغيل tsc بشكل أساسي باستخدام tsconfig.config كخطوة ما قبل التجميع ، ولكن عندما أفعل ذلك (tsc أولاً ، ثم تراكمي بدون البرنامج المساعد من نوع الكتابة)

var SomeName = (function (exports)...

ربما أفتقد بعض إعدادات التكوين هنا ..؟

هل تلك المعلمات الأخرى مستخدمة داخل الوظيفة على الإطلاق؟ هل الجسد هو نفسه في كلتا الحالتين؟

نعم ، يتم استخدامها ، وهناك جزء كبير إضافي ، بدءًا من

 function createCommonjsModule(fn, module) {

في منتصف النص (عند استخدام البرنامج المساعد المطبوع عليه مقارنة باستخدام js العادي كمصدر). يبدو أن الكثير منها مرتبط بوظيفة تصحيح أخطاء Node.
لقد أعددت الحد الأدنى من الريبو لحالة الاختبار هنا .

بالنظر إلى الريبو التجريبي الخاص بك ، ينتج المكون الإضافي نفس الناتج tsc. يمكنك التحقق منه في ملف .rpt2_cache/xxx/code/xxx - ابحث عن خاصية json بالداخل code . هذا هو ما يتم تمريره إلى تراكمي.

الاختلاف الرئيسي في نتيجتين هو عندما يفعل import axios from 'axios'; - في حالات الاستحواذ العادي js التراكمية axios/dist/axios.js - إنشاء webpaked. في حالة استخدام البرنامج المساعد axios/lib/axios.js يتم حله.

يبدو أن Webpacked build هو إصدار المستعرض الذي تم العثور عليه بطريقة سحرية بواسطة rollup-plugin-node-resolve في وضع المتصفح.

إذا قمت بوضع البرنامج المساعد من نوع typecript في آخر السلسلة ، فإن التجميع يستخدم حل العقدة لحل عمليات الاستيراد بنفسه ، وكل شيء يعمل كما هو متوقع.

هذا السطر في ريبو الاختبار الخاص بك:
tsPluginConf.plugins.splice(tsPluginConf.plugins.length - 1, 0, typescript());

هذه هي المرة الأولى التي أرى فيها أهمية ترتيب المكون الإضافي :). سوف أقوم بتحديث الملف التمهيدي.

ربما لا تحتاج إلى البرنامج المساعد json الآن أيضًا.

ezolenko لقد

انها تقول:

Must be before this plugin in the plugin list, especially when browser: true option is used, see #66

أعتقد أنني كنت أفكر في المكان الذي أضع فيه المكون الإضافي المطبوع عليه ، ثم قرأت السطر التالي واعتقدت أن this plugin يشير إلى rollup-plugin-node-resolve .

عمل رائع رغم ذلك! شكرا

ثابت ، شكرا :)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات